/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/nested_pairs_to_triple.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/conv2d/selector_list.h"
#include "test/conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Selectors = sycldnn::types::SelectorList;
using Backends = sycldnn::types::AllBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<Selectors, DataTypeList>::type;
using BackendTypePairs =
    sycldnn::types::CartesianProduct<SNNTypePairs, Backends>::type;
using TestTriples = sycldnn::types::NestedPairsToTriple<BackendTypePairs>::type;

using GTestTypeTriples = sycldnn::types::ToGTestTypes<TestTriples>::type;

template <typename Pair>
using FilterBackpropWindow7Stride4 = WindowStrideTest<Pair, 7, 4>;
TYPED_TEST_SUITE(FilterBackpropWindow7Stride4, GTestTypeTriples);
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1508., 1536., 2125., 2164., 2203., 1336., 1360., 1816., 1844., 2554.,
      2593., 2632., 1600., 1624., 2151., 2184., 3021., 3066., 3111., 1884.,
      1911., 2514., 2547., 3516., 3561., 3606., 2181., 2208., 2877., 2910.,
      4011., 4056., 4101., 2478., 2505., 1096., 1112., 1474., 1495., 1516.,
      868.,  880.,  1272., 1288., 1705., 1726., 1747., 1000., 1012.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      342., 352., 362.,  372.,  382.,  392.,  402.,  452.,  462., 472.,
      482., 492., 502.,  512.,  562.,  572.,  582.,  592.,  602., 612.,
      622., 672., 682.,  692.,  702.,  712.,  722.,  732.,  782., 792.,
      802., 812., 822.,  832.,  842.,  892.,  902.,  912.,  922., 932.,
      942., 952., 1002., 1012., 1022., 1032., 1042., 1052., 1062.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2820., 3016., 2872., 3072., 3956., 4250., 4028., 4328., 4100., 4406.,
      2472., 2672., 2516., 2720., 3392., 3632., 3444., 3688., 4748., 5108.,
      4820., 5186., 4892., 5264., 2956., 3200., 3000., 3248., 4008., 4302.,
      4068., 4368., 5601., 6042., 5682., 6132., 5763., 6222., 3468., 3768.,
      3516., 3822., 4668., 5028., 4728., 5094., 6492., 7032., 6573., 7122.,
      6654., 7212., 3996., 4362., 4044., 4416., 5328., 5754., 5388., 5820.,
      7383., 8022., 7464., 8112., 7545., 8202., 4524., 4956., 4572., 5010.,
      1952., 2192., 1980., 2224., 2588., 2948., 2624., 2990., 2660., 3032.,
      1492., 1736., 1512., 1760., 2260., 2544., 2288., 2576., 2984., 3410.,
      3020., 3452., 3056., 3494., 1712., 2000., 1732., 2024.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      584.,  684.,  600.,  704.,  616.,  724.,  632.,  744.,  648.,  764.,
      664.,  784.,  680.,  804.,  760.,  904.,  776.,  924.,  792.,  944.,
      808.,  964.,  824.,  984.,  840.,  1004., 856.,  1024., 936.,  1124.,
      952.,  1144., 968.,  1164., 984.,  1184., 1000., 1204., 1016., 1224.,
      1032., 1244., 1112., 1344., 1128., 1364., 1144., 1384., 1160., 1404.,
      1176., 1424., 1192., 1444., 1208., 1464., 1288., 1564., 1304., 1584.,
      1320., 1604., 1336., 1624., 1352., 1644., 1368., 1664., 1384., 1684.,
      1464., 1784., 1480., 1804., 1496., 1824., 1512., 1844., 1528., 1864.,
      1544., 1884., 1560., 1904., 1640., 2004., 1656., 2024., 1672., 2044.,
      1688., 2064., 1704., 2084., 1720., 2104., 1736., 2124.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5444.,  5640.,  5836.,  6032.,  5544.,  5744.,  5944.,  6144.,  7618.,
      7912.,  8206.,  8500.,  7756.,  8056.,  8356.,  8656.,  7894.,  8200.,
      8506.,  8812.,  4744.,  4944.,  5144.,  5344.,  4828.,  5032.,  5236.,
      5440.,  6544.,  6784.,  7024.,  7264.,  6644.,  6888.,  7132.,  7376.,
      9136.,  9496.,  9856.,  10216., 9274.,  9640.,  10006., 10372., 9412.,
      9784.,  10156., 10528., 5668.,  5912.,  6156.,  6400.,  5752.,  6000.,
      6248.,  6496.,  7722.,  8016.,  8310.,  8604.,  7836.,  8136.,  8436.,
      8736.,  10761., 11202., 11643., 12084., 10914., 11364., 11814., 12264.,
      11067., 11526., 11985., 12444., 6636.,  6936.,  7236.,  7536.,  6726.,
      7032.,  7338.,  7644.,  8976.,  9336.,  9696.,  10056., 9090.,  9456.,
      9822.,  10188., 12444., 12984., 13524., 14064., 12597., 13146., 13695.,
      14244., 12750., 13308., 13866., 14424., 7626.,  7992.,  8358.,  8724.,
      7716.,  8088.,  8460.,  8832.,  10230., 10656., 11082., 11508., 10344.,
      10776., 11208., 11640., 14127., 14766., 15405., 16044., 14280., 14928.,
      15576., 16224., 14433., 15090., 15747., 16404., 8616.,  9048.,  9480.,
      9912.,  8706.,  9144.,  9582.,  10020., 3664.,  3904.,  4144.,  4384.,
      3716.,  3960.,  4204.,  4448.,  4816.,  5176.,  5536.,  5896.,  4882.,
      5248.,  5614.,  5980.,  4948.,  5320.,  5692.,  6064.,  2740.,  2984.,
      3228.,  3472.,  2776.,  3024.,  3272.,  3520.,  4236.,  4520.,  4804.,
      5088.,  4288.,  4576.,  4864.,  5152.,  5542.,  5968.,  6394.,  6820.,
      5608.,  6040.,  6472.,  6904.,  5674.,  6112.,  6550.,  6988.,  3136.,
      3424.,  3712.,  4000.,  3172.,  3464.,  3756.,  4048.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1068., 1168., 1268., 1368., 1096., 1200., 1304., 1408., 1124., 1232.,
      1340., 1448., 1152., 1264., 1376., 1488., 1180., 1296., 1412., 1528.,
      1208., 1328., 1448., 1568., 1236., 1360., 1484., 1608., 1376., 1520.,
      1664., 1808., 1404., 1552., 1700., 1848., 1432., 1584., 1736., 1888.,
      1460., 1616., 1772., 1928., 1488., 1648., 1808., 1968., 1516., 1680.,
      1844., 2008., 1544., 1712., 1880., 2048., 1684., 1872., 2060., 2248.,
      1712., 1904., 2096., 2288., 1740., 1936., 2132., 2328., 1768., 1968.,
      2168., 2368., 1796., 2000., 2204., 2408., 1824., 2032., 2240., 2448.,
      1852., 2064., 2276., 2488., 1992., 2224., 2456., 2688., 2020., 2256.,
      2492., 2728., 2048., 2288., 2528., 2768., 2076., 2320., 2564., 2808.,
      2104., 2352., 2600., 2848., 2132., 2384., 2636., 2888., 2160., 2416.,
      2672., 2928., 2300., 2576., 2852., 3128., 2328., 2608., 2888., 3168.,
      2356., 2640., 2924., 3208., 2384., 2672., 2960., 3248., 2412., 2704.,
      2996., 3288., 2440., 2736., 3032., 3328., 2468., 2768., 3068., 3368.,
      2608., 2928., 3248., 3568., 2636., 2960., 3284., 3608., 2664., 2992.,
      3320., 3648., 2692., 3024., 3356., 3688., 2720., 3056., 3392., 3728.,
      2748., 3088., 3428., 3768., 2776., 3120., 3464., 3808., 2916., 3280.,
      3644., 4008., 2944., 3312., 3680., 4048., 2972., 3344., 3716., 4088.,
      3000., 3376., 3752., 4128., 3028., 3408., 3788., 4168., 3056., 3440.,
      3824., 4208., 3084., 3472., 3860., 4248.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2988., 3016., 3044., 3072., 4211., 4250., 4289., 4328., 4367., 4406.,
      2648., 2672., 2696., 2720., 3604., 3632., 3660., 3688., 5069., 5108.,
      5147., 5186., 5225., 5264., 3176., 3200., 3224., 3248., 4269., 4302.,
      4335., 4368., 5997., 6042., 6087., 6132., 6177., 6222., 3741., 3768.,
      3795., 3822., 4995., 5028., 5061., 5094., 6987., 7032., 7077., 7122.,
      7167., 7212., 4335., 4362., 4389., 4416., 5721., 5754., 5787., 5820.,
      7977., 8022., 8067., 8112., 8157., 8202., 4929., 4956., 4983., 5010.,
      2176., 2192., 2208., 2224., 2927., 2948., 2969., 2990., 3011., 3032.,
      1724., 1736., 1748., 1760., 2528., 2544., 2560., 2576., 3389., 3410.,
      3431., 3452., 3473., 3494., 1988., 2000., 2012., 2024.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      674.,  684.,  694.,  704.,  714.,  724.,  734.,  744.,  754.,  764.,
      774.,  784.,  794.,  804.,  894.,  904.,  914.,  924.,  934.,  944.,
      954.,  964.,  974.,  984.,  994.,  1004., 1014., 1024., 1114., 1124.,
      1134., 1144., 1154., 1164., 1174., 1184., 1194., 1204., 1214., 1224.,
      1234., 1244., 1334., 1344., 1354., 1364., 1374., 1384., 1394., 1404.,
      1414., 1424., 1434., 1444., 1454., 1464., 1554., 1564., 1574., 1584.,
      1594., 1604., 1614., 1624., 1634., 1644., 1654., 1664., 1674., 1684.,
      1774., 1784., 1794., 1804., 1814., 1824., 1834., 1844., 1854., 1864.,
      1874., 1884., 1894., 1904., 1994., 2004., 2014., 2024., 2034., 2044.,
      2054., 2064., 2074., 2084., 2094., 2104., 2114., 2124.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5588.,  5976.,  5640.,  6032.,  5692.,  6088.,  5744.,  6144.,  7840.,
      8422.,  7912.,  8500.,  7984.,  8578.,  8056.,  8656.,  8128.,  8734.,
      8200.,  8812.,  4900.,  5296.,  4944.,  5344.,  4988.,  5392.,  5032.,
      5440.,  6732.,  7208.,  6784.,  7264.,  6836.,  7320.,  6888.,  7376.,
      9424.,  10138., 9496.,  10216., 9568.,  10294., 9640.,  10372., 9712.,
      10450., 9784.,  10528., 5868.,  6352.,  5912.,  6400.,  5956.,  6448.,
      6000.,  6496.,  7956.,  8538.,  8016.,  8604.,  8076.,  8670.,  8136.,
      8736.,  11121., 11994., 11202., 12084., 11283., 12174., 11364., 12264.,
      11445., 12354., 11526., 12444., 6888.,  7482.,  6936.,  7536.,  6984.,
      7590.,  7032.,  7644.,  9276.,  9990.,  9336.,  10056., 9396.,  10122.,
      9456.,  10188., 12903., 13974., 12984., 14064., 13065., 14154., 13146.,
      14244., 13227., 14334., 13308., 14424., 7944.,  8670.,  7992.,  8724.,
      8040.,  8778.,  8088.,  8832.,  10596., 11442., 10656., 11508., 10716.,
      11574., 10776., 11640., 14685., 15954., 14766., 16044., 14847., 16134.,
      14928., 16224., 15009., 16314., 15090., 16404., 9000.,  9858.,  9048.,
      9912.,  9096.,  9966.,  9144.,  10020., 3876.,  4352.,  3904.,  4384.,
      3932.,  4416.,  3960.,  4448.,  5140.,  5854.,  5176.,  5896.,  5212.,
      5938.,  5248.,  5980.,  5284.,  6022.,  5320.,  6064.,  2964.,  3448.,
      2984.,  3472.,  3004.,  3496.,  3024.,  3520.,  4492.,  5056.,  4520.,
      5088.,  4548.,  5120.,  4576.,  5152.,  5932.,  6778.,  5968.,  6820.,
      6004.,  6862.,  6040.,  6904.,  6076.,  6946.,  6112.,  6988.,  3404.,
      3976.,  3424.,  4000.,  3444.,  4024.,  3464.,  4048.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1152., 1348., 1168., 1368., 1184., 1388., 1200., 1408., 1216., 1428.,
      1232., 1448., 1248., 1468., 1264., 1488., 1280., 1508., 1296., 1528.,
      1312., 1548., 1328., 1568., 1344., 1588., 1360., 1608., 1504., 1788.,
      1520., 1808., 1536., 1828., 1552., 1848., 1568., 1868., 1584., 1888.,
      1600., 1908., 1616., 1928., 1632., 1948., 1648., 1968., 1664., 1988.,
      1680., 2008., 1696., 2028., 1712., 2048., 1856., 2228., 1872., 2248.,
      1888., 2268., 1904., 2288., 1920., 2308., 1936., 2328., 1952., 2348.,
      1968., 2368., 1984., 2388., 2000., 2408., 2016., 2428., 2032., 2448.,
      2048., 2468., 2064., 2488., 2208., 2668., 2224., 2688., 2240., 2708.,
      2256., 2728., 2272., 2748., 2288., 2768., 2304., 2788., 2320., 2808.,
      2336., 2828., 2352., 2848., 2368., 2868., 2384., 2888., 2400., 2908.,
      2416., 2928., 2560., 3108., 2576., 3128., 2592., 3148., 2608., 3168.,
      2624., 3188., 2640., 3208., 2656., 3228., 2672., 3248., 2688., 3268.,
      2704., 3288., 2720., 3308., 2736., 3328., 2752., 3348., 2768., 3368.,
      2912., 3548., 2928., 3568., 2944., 3588., 2960., 3608., 2976., 3628.,
      2992., 3648., 3008., 3668., 3024., 3688., 3040., 3708., 3056., 3728.,
      3072., 3748., 3088., 3768., 3104., 3788., 3120., 3808., 3264., 3988.,
      3280., 4008., 3296., 4028., 3312., 4048., 3328., 4068., 3344., 4088.,
      3360., 4108., 3376., 4128., 3392., 4148., 3408., 4168., 3424., 4188.,
      3440., 4208., 3456., 4228., 3472., 4248.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10788., 11176., 11564., 11952., 10888., 11280., 11672., 12064., 10988.,
      11384., 11780., 12176., 11088., 11488., 11888., 12288., 15098., 15680.,
      16262., 16844., 15236., 15824., 16412., 17000., 15374., 15968., 16562.,
      17156., 15512., 16112., 16712., 17312., 15650., 16256., 16862., 17468.,
      15788., 16400., 17012., 17624., 9404.,  9800.,  10196., 10592., 9488.,
      9888.,  10288., 10688., 9572.,  9976.,  10380., 10784., 9656.,  10064.,
      10472., 10880., 12988., 13464., 13940., 14416., 13088., 13568., 14048.,
      14528., 13188., 13672., 14156., 14640., 13288., 13776., 14264., 14752.,
      18134., 18848., 19562., 20276., 18272., 18992., 19712., 20432., 18410.,
      19136., 19862., 20588., 18548., 19280., 20012., 20744., 18686., 19424.,
      20162., 20900., 18824., 19568., 20312., 21056., 11252., 11736., 12220.,
      12704., 11336., 11824., 12312., 12800., 11420., 11912., 12404., 12896.,
      11504., 12000., 12496., 12992., 15330., 15912., 16494., 17076., 15444.,
      16032., 16620., 17208., 15558., 16152., 16746., 17340., 15672., 16272.,
      16872., 17472., 21369., 22242., 23115., 23988., 21522., 22404., 23286.,
      24168., 21675., 22566., 23457., 24348., 21828., 22728., 23628., 24528.,
      21981., 22890., 23799., 24708., 22134., 23052., 23970., 24888., 13182.,
      13776., 14370., 14964., 13272., 13872., 14472., 15072., 13362., 13968.,
      14574., 15180., 13452., 14064., 14676., 15288., 17838., 18552., 19266.,
      19980., 17952., 18672., 19392., 20112., 18066., 18792., 19518., 20244.,
      18180., 18912., 19644., 20376., 24735., 25806., 26877., 27948., 24888.,
      25968., 27048., 28128., 25041., 26130., 27219., 28308., 25194., 26292.,
      27390., 28488., 25347., 26454., 27561., 28668., 25500., 26616., 27732.,
      28848., 15162., 15888., 16614., 17340., 15252., 15984., 16716., 17448.,
      15342., 16080., 16818., 17556., 15432., 16176., 16920., 17664., 20346.,
      21192., 22038., 22884., 20460., 21312., 22164., 23016., 20574., 21432.,
      22290., 23148., 20688., 21552., 22416., 23280., 28101., 29370., 30639.,
      31908., 28254., 29532., 30810., 32088., 28407., 29694., 30981., 32268.,
      28560., 29856., 31152., 32448., 28713., 30018., 31323., 32628., 28866.,
      30180., 31494., 32808., 17142., 18000., 18858., 19716., 17232., 18096.,
      18960., 19824., 17322., 18192., 19062., 19932., 17412., 18288., 19164.,
      20040., 7276.,  7752.,  8228.,  8704.,  7328.,  7808.,  8288.,  8768.,
      7380.,  7864.,  8348.,  8832.,  7432.,  7920.,  8408.,  8896.,  9566.,
      10280., 10994., 11708., 9632.,  10352., 11072., 11792., 9698.,  10424.,
      11150., 11876., 9764.,  10496., 11228., 11960., 9830.,  10568., 11306.,
      12044., 9896.,  10640., 11384., 12128., 5444.,  5928.,  6412.,  6896.,
      5480.,  5968.,  6456.,  6944.,  5516.,  6008.,  6500.,  6992.,  5552.,
      6048.,  6544.,  7040.,  8420.,  8984.,  9548.,  10112., 8472.,  9040.,
      9608.,  10176., 8524.,  9096.,  9668.,  10240., 8576.,  9152.,  9728.,
      10304., 11018., 11864., 12710., 13556., 11084., 11936., 12788., 13640.,
      11150., 12008., 12866., 13724., 11216., 12080., 12944., 13808., 11282.,
      12152., 13022., 13892., 11348., 12224., 13100., 13976., 6236.,  6808.,
      7380.,  7952.,  6272.,  6848.,  7424.,  8000.,  6308.,  6888.,  7468.,
      8048.,  6344.,  6928.,  7512.,  8096.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2108., 2304., 2500., 2696., 2136., 2336., 2536., 2736., 2164., 2368.,
      2572., 2776., 2192., 2400., 2608., 2816., 2220., 2432., 2644., 2856.,
      2248., 2464., 2680., 2896., 2276., 2496., 2716., 2936., 2304., 2528.,
      2752., 2976., 2332., 2560., 2788., 3016., 2360., 2592., 2824., 3056.,
      2388., 2624., 2860., 3096., 2416., 2656., 2896., 3136., 2444., 2688.,
      2932., 3176., 2472., 2720., 2968., 3216., 2724., 3008., 3292., 3576.,
      2752., 3040., 3328., 3616., 2780., 3072., 3364., 3656., 2808., 3104.,
      3400., 3696., 2836., 3136., 3436., 3736., 2864., 3168., 3472., 3776.,
      2892., 3200., 3508., 3816., 2920., 3232., 3544., 3856., 2948., 3264.,
      3580., 3896., 2976., 3296., 3616., 3936., 3004., 3328., 3652., 3976.,
      3032., 3360., 3688., 4016., 3060., 3392., 3724., 4056., 3088., 3424.,
      3760., 4096., 3340., 3712., 4084., 4456., 3368., 3744., 4120., 4496.,
      3396., 3776., 4156., 4536., 3424., 3808., 4192., 4576., 3452., 3840.,
      4228., 4616., 3480., 3872., 4264., 4656., 3508., 3904., 4300., 4696.,
      3536., 3936., 4336., 4736., 3564., 3968., 4372., 4776., 3592., 4000.,
      4408., 4816., 3620., 4032., 4444., 4856., 3648., 4064., 4480., 4896.,
      3676., 4096., 4516., 4936., 3704., 4128., 4552., 4976., 3956., 4416.,
      4876., 5336., 3984., 4448., 4912., 5376., 4012., 4480., 4948., 5416.,
      4040., 4512., 4984., 5456., 4068., 4544., 5020., 5496., 4096., 4576.,
      5056., 5536., 4124., 4608., 5092., 5576., 4152., 4640., 5128., 5616.,
      4180., 4672., 5164., 5656., 4208., 4704., 5200., 5696., 4236., 4736.,
      5236., 5736., 4264., 4768., 5272., 5776., 4292., 4800., 5308., 5816.,
      4320., 4832., 5344., 5856., 4572., 5120., 5668., 6216., 4600., 5152.,
      5704., 6256., 4628., 5184., 5740., 6296., 4656., 5216., 5776., 6336.,
      4684., 5248., 5812., 6376., 4712., 5280., 5848., 6416., 4740., 5312.,
      5884., 6456., 4768., 5344., 5920., 6496., 4796., 5376., 5956., 6536.,
      4824., 5408., 5992., 6576., 4852., 5440., 6028., 6616., 4880., 5472.,
      6064., 6656., 4908., 5504., 6100., 6696., 4936., 5536., 6136., 6736.,
      5188., 5824., 6460., 7096., 5216., 5856., 6496., 7136., 5244., 5888.,
      6532., 7176., 5272., 5920., 6568., 7216., 5300., 5952., 6604., 7256.,
      5328., 5984., 6640., 7296., 5356., 6016., 6676., 7336., 5384., 6048.,
      6712., 7376., 5412., 6080., 6748., 7416., 5440., 6112., 6784., 7456.,
      5468., 6144., 6820., 7496., 5496., 6176., 6856., 7536., 5524., 6208.,
      6892., 7576., 5552., 6240., 6928., 7616., 5804., 6528., 7252., 7976.,
      5832., 6560., 7288., 8016., 5860., 6592., 7324., 8056., 5888., 6624.,
      7360., 8096., 5916., 6656., 7396., 8136., 5944., 6688., 7432., 8176.,
      5972., 6720., 7468., 8216., 6000., 6752., 7504., 8256., 6028., 6784.,
      7540., 8296., 6056., 6816., 7576., 8336., 6084., 6848., 7612., 8376.,
      6112., 6880., 7648., 8416., 6140., 6912., 7684., 8456., 6168., 6944.,
      7720., 8496.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5948.,  5976.,  6004.,  6032.,  6060.,  6088.,  6116.,  6144.,  8383.,
      8422.,  8461.,  8500.,  8539.,  8578.,  8617.,  8656.,  8695.,  8734.,
      8773.,  8812.,  5272.,  5296.,  5320.,  5344.,  5368.,  5392.,  5416.,
      5440.,  7180.,  7208.,  7236.,  7264.,  7292.,  7320.,  7348.,  7376.,
      10099., 10138., 10177., 10216., 10255., 10294., 10333., 10372., 10411.,
      10450., 10489., 10528., 6328.,  6352.,  6376.,  6400.,  6424.,  6448.,
      6472.,  6496.,  8505.,  8538.,  8571.,  8604.,  8637.,  8670.,  8703.,
      8736.,  11949., 11994., 12039., 12084., 12129., 12174., 12219., 12264.,
      12309., 12354., 12399., 12444., 7455.,  7482.,  7509.,  7536.,  7563.,
      7590.,  7617.,  7644.,  9957.,  9990.,  10023., 10056., 10089., 10122.,
      10155., 10188., 13929., 13974., 14019., 14064., 14109., 14154., 14199.,
      14244., 14289., 14334., 14379., 14424., 8643.,  8670.,  8697.,  8724.,
      8751.,  8778.,  8805.,  8832.,  11409., 11442., 11475., 11508., 11541.,
      11574., 11607., 11640., 15909., 15954., 15999., 16044., 16089., 16134.,
      16179., 16224., 16269., 16314., 16359., 16404., 9831.,  9858.,  9885.,
      9912.,  9939.,  9966.,  9993.,  10020., 4336.,  4352.,  4368.,  4384.,
      4400.,  4416.,  4432.,  4448.,  5833.,  5854.,  5875.,  5896.,  5917.,
      5938.,  5959.,  5980.,  6001.,  6022.,  6043.,  6064.,  3436.,  3448.,
      3460.,  3472.,  3484.,  3496.,  3508.,  3520.,  5040.,  5056.,  5072.,
      5088.,  5104.,  5120.,  5136.,  5152.,  6757.,  6778.,  6799.,  6820.,
      6841.,  6862.,  6883.,  6904.,  6925.,  6946.,  6967.,  6988.,  3964.,
      3976.,  3988.,  4000.,  4012.,  4024.,  4036.,  4048.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1338., 1348., 1358., 1368., 1378., 1388., 1398., 1408., 1418., 1428.,
      1438., 1448., 1458., 1468., 1478., 1488., 1498., 1508., 1518., 1528.,
      1538., 1548., 1558., 1568., 1578., 1588., 1598., 1608., 1778., 1788.,
      1798., 1808., 1818., 1828., 1838., 1848., 1858., 1868., 1878., 1888.,
      1898., 1908., 1918., 1928., 1938., 1948., 1958., 1968., 1978., 1988.,
      1998., 2008., 2018., 2028., 2038., 2048., 2218., 2228., 2238., 2248.,
      2258., 2268., 2278., 2288., 2298., 2308., 2318., 2328., 2338., 2348.,
      2358., 2368., 2378., 2388., 2398., 2408., 2418., 2428., 2438., 2448.,
      2458., 2468., 2478., 2488., 2658., 2668., 2678., 2688., 2698., 2708.,
      2718., 2728., 2738., 2748., 2758., 2768., 2778., 2788., 2798., 2808.,
      2818., 2828., 2838., 2848., 2858., 2868., 2878., 2888., 2898., 2908.,
      2918., 2928., 3098., 3108., 3118., 3128., 3138., 3148., 3158., 3168.,
      3178., 3188., 3198., 3208., 3218., 3228., 3238., 3248., 3258., 3268.,
      3278., 3288., 3298., 3308., 3318., 3328., 3338., 3348., 3358., 3368.,
      3538., 3548., 3558., 3568., 3578., 3588., 3598., 3608., 3618., 3628.,
      3638., 3648., 3658., 3668., 3678., 3688., 3698., 3708., 3718., 3728.,
      3738., 3748., 3758., 3768., 3778., 3788., 3798., 3808., 3978., 3988.,
      3998., 4008., 4018., 4028., 4038., 4048., 4058., 4068., 4078., 4088.,
      4098., 4108., 4118., 4128., 4138., 4148., 4158., 4168., 4178., 4188.,
      4198., 4208., 4218., 4228., 4238., 4248.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11124., 11896., 11176., 11952., 11228., 12008., 11280., 12064., 11332.,
      12120., 11384., 12176., 11436., 12232., 11488., 12288., 15608., 16766.,
      15680., 16844., 15752., 16922., 15824., 17000., 15896., 17078., 15968.,
      17156., 16040., 17234., 16112., 17312., 16184., 17390., 16256., 17468.,
      16328., 17546., 16400., 17624., 9756.,  10544., 9800.,  10592., 9844.,
      10640., 9888.,  10688., 9932.,  10736., 9976.,  10784., 10020., 10832.,
      10064., 10880., 13412., 14360., 13464., 14416., 13516., 14472., 13568.,
      14528., 13620., 14584., 13672., 14640., 13724., 14696., 13776., 14752.,
      18776., 20198., 18848., 20276., 18920., 20354., 18992., 20432., 19064.,
      20510., 19136., 20588., 19208., 20666., 19280., 20744., 19352., 20822.,
      19424., 20900., 19496., 20978., 19568., 21056., 11692., 12656., 11736.,
      12704., 11780., 12752., 11824., 12800., 11868., 12848., 11912., 12896.,
      11956., 12944., 12000., 12992., 15852., 17010., 15912., 17076., 15972.,
      17142., 16032., 17208., 16092., 17274., 16152., 17340., 16212., 17406.,
      16272., 17472., 22161., 23898., 22242., 23988., 22323., 24078., 22404.,
      24168., 22485., 24258., 22566., 24348., 22647., 24438., 22728., 24528.,
      22809., 24618., 22890., 24708., 22971., 24798., 23052., 24888., 13728.,
      14910., 13776., 14964., 13824., 15018., 13872., 15072., 13920., 15126.,
      13968., 15180., 14016., 15234., 14064., 15288., 18492., 19914., 18552.,
      19980., 18612., 20046., 18672., 20112., 18732., 20178., 18792., 20244.,
      18852., 20310., 18912., 20376., 25725., 27858., 25806., 27948., 25887.,
      28038., 25968., 28128., 26049., 28218., 26130., 28308., 26211., 28398.,
      26292., 28488., 26373., 28578., 26454., 28668., 26535., 28758., 26616.,
      28848., 15840., 17286., 15888., 17340., 15936., 17394., 15984., 17448.,
      16032., 17502., 16080., 17556., 16128., 17610., 16176., 17664., 21132.,
      22818., 21192., 22884., 21252., 22950., 21312., 23016., 21372., 23082.,
      21432., 23148., 21492., 23214., 21552., 23280., 29289., 31818., 29370.,
      31908., 29451., 31998., 29532., 32088., 29613., 32178., 29694., 32268.,
      29775., 32358., 29856., 32448., 29937., 32538., 30018., 32628., 30099.,
      32718., 30180., 32808., 17952., 19662., 18000., 19716., 18048., 19770.,
      18096., 19824., 18144., 19878., 18192., 19932., 18240., 19986., 18288.,
      20040., 7724.,  8672.,  7752.,  8704.,  7780.,  8736.,  7808.,  8768.,
      7836.,  8800.,  7864.,  8832.,  7892.,  8864.,  7920.,  8896.,  10244.,
      11666., 10280., 11708., 10316., 11750., 10352., 11792., 10388., 11834.,
      10424., 11876., 10460., 11918., 10496., 11960., 10532., 12002., 10568.,
      12044., 10604., 12086., 10640., 12128., 5908.,  6872.,  5928.,  6896.,
      5948.,  6920.,  5968.,  6944.,  5988.,  6968.,  6008.,  6992.,  6028.,
      7016.,  6048.,  7040.,  8956.,  10080., 8984.,  10112., 9012.,  10144.,
      9040.,  10176., 9068.,  10208., 9096.,  10240., 9124.,  10272., 9152.,
      10304., 11828., 13514., 11864., 13556., 11900., 13598., 11936., 13640.,
      11972., 13682., 12008., 13724., 12044., 13766., 12080., 13808., 12116.,
      13850., 12152., 13892., 12188., 13934., 12224., 13976., 6788.,  7928.,
      6808.,  7952.,  6828.,  7976.,  6848.,  8000.,  6868.,  8024.,  6888.,
      8048.,  6908.,  8072.,  6928.,  8096.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2288., 2676., 2304., 2696., 2320., 2716., 2336., 2736., 2352., 2756.,
      2368., 2776., 2384., 2796., 2400., 2816., 2416., 2836., 2432., 2856.,
      2448., 2876., 2464., 2896., 2480., 2916., 2496., 2936., 2512., 2956.,
      2528., 2976., 2544., 2996., 2560., 3016., 2576., 3036., 2592., 3056.,
      2608., 3076., 2624., 3096., 2640., 3116., 2656., 3136., 2672., 3156.,
      2688., 3176., 2704., 3196., 2720., 3216., 2992., 3556., 3008., 3576.,
      3024., 3596., 3040., 3616., 3056., 3636., 3072., 3656., 3088., 3676.,
      3104., 3696., 3120., 3716., 3136., 3736., 3152., 3756., 3168., 3776.,
      3184., 3796., 3200., 3816., 3216., 3836., 3232., 3856., 3248., 3876.,
      3264., 3896., 3280., 3916., 3296., 3936., 3312., 3956., 3328., 3976.,
      3344., 3996., 3360., 4016., 3376., 4036., 3392., 4056., 3408., 4076.,
      3424., 4096., 3696., 4436., 3712., 4456., 3728., 4476., 3744., 4496.,
      3760., 4516., 3776., 4536., 3792., 4556., 3808., 4576., 3824., 4596.,
      3840., 4616., 3856., 4636., 3872., 4656., 3888., 4676., 3904., 4696.,
      3920., 4716., 3936., 4736., 3952., 4756., 3968., 4776., 3984., 4796.,
      4000., 4816., 4016., 4836., 4032., 4856., 4048., 4876., 4064., 4896.,
      4080., 4916., 4096., 4936., 4112., 4956., 4128., 4976., 4400., 5316.,
      4416., 5336., 4432., 5356., 4448., 5376., 4464., 5396., 4480., 5416.,
      4496., 5436., 4512., 5456., 4528., 5476., 4544., 5496., 4560., 5516.,
      4576., 5536., 4592., 5556., 4608., 5576., 4624., 5596., 4640., 5616.,
      4656., 5636., 4672., 5656., 4688., 5676., 4704., 5696., 4720., 5716.,
      4736., 5736., 4752., 5756., 4768., 5776., 4784., 5796., 4800., 5816.,
      4816., 5836., 4832., 5856., 5104., 6196., 5120., 6216., 5136., 6236.,
      5152., 6256., 5168., 6276., 5184., 6296., 5200., 6316., 5216., 6336.,
      5232., 6356., 5248., 6376., 5264., 6396., 5280., 6416., 5296., 6436.,
      5312., 6456., 5328., 6476., 5344., 6496., 5360., 6516., 5376., 6536.,
      5392., 6556., 5408., 6576., 5424., 6596., 5440., 6616., 5456., 6636.,
      5472., 6656., 5488., 6676., 5504., 6696., 5520., 6716., 5536., 6736.,
      5808., 7076., 5824., 7096., 5840., 7116., 5856., 7136., 5872., 7156.,
      5888., 7176., 5904., 7196., 5920., 7216., 5936., 7236., 5952., 7256.,
      5968., 7276., 5984., 7296., 6000., 7316., 6016., 7336., 6032., 7356.,
      6048., 7376., 6064., 7396., 6080., 7416., 6096., 7436., 6112., 7456.,
      6128., 7476., 6144., 7496., 6160., 7516., 6176., 7536., 6192., 7556.,
      6208., 7576., 6224., 7596., 6240., 7616., 6512., 7956., 6528., 7976.,
      6544., 7996., 6560., 8016., 6576., 8036., 6592., 8056., 6608., 8076.,
      6624., 8096., 6640., 8116., 6656., 8136., 6672., 8156., 6688., 8176.,
      6704., 8196., 6720., 8216., 6736., 8236., 6752., 8256., 6768., 8276.,
      6784., 8296., 6800., 8316., 6816., 8336., 6832., 8356., 6848., 8376.,
      6864., 8396., 6880., 8416., 6896., 8436., 6912., 8456., 6928., 8476.,
      6944., 8496.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21476., 22248., 23020., 23792., 21576., 22352., 23128., 23904., 21676.,
      22456., 23236., 24016., 21776., 22560., 23344., 24128., 21876., 22664.,
      23452., 24240., 21976., 22768., 23560., 24352., 22076., 22872., 23668.,
      24464., 22176., 22976., 23776., 24576., 30058., 31216., 32374., 33532.,
      30196., 31360., 32524., 33688., 30334., 31504., 32674., 33844., 30472.,
      31648., 32824., 34000., 30610., 31792., 32974., 34156., 30748., 31936.,
      33124., 34312., 30886., 32080., 33274., 34468., 31024., 32224., 33424.,
      34624., 31162., 32368., 33574., 34780., 31300., 32512., 33724., 34936.,
      31438., 32656., 33874., 35092., 31576., 32800., 34024., 35248., 18724.,
      19512., 20300., 21088., 18808., 19600., 20392., 21184., 18892., 19688.,
      20484., 21280., 18976., 19776., 20576., 21376., 19060., 19864., 20668.,
      21472., 19144., 19952., 20760., 21568., 19228., 20040., 20852., 21664.,
      19312., 20128., 20944., 21760., 25876., 26824., 27772., 28720., 25976.,
      26928., 27880., 28832., 26076., 27032., 27988., 28944., 26176., 27136.,
      28096., 29056., 26276., 27240., 28204., 29168., 26376., 27344., 28312.,
      29280., 26476., 27448., 28420., 29392., 26576., 27552., 28528., 29504.,
      36130., 37552., 38974., 40396., 36268., 37696., 39124., 40552., 36406.,
      37840., 39274., 40708., 36544., 37984., 39424., 40864., 36682., 38128.,
      39574., 41020., 36820., 38272., 39724., 41176., 36958., 38416., 39874.,
      41332., 37096., 38560., 40024., 41488., 37234., 38704., 40174., 41644.,
      37372., 38848., 40324., 41800., 37510., 38992., 40474., 41956., 37648.,
      39136., 40624., 42112., 22420., 23384., 24348., 25312., 22504., 23472.,
      24440., 25408., 22588., 23560., 24532., 25504., 22672., 23648., 24624.,
      25600., 22756., 23736., 24716., 25696., 22840., 23824., 24808., 25792.,
      22924., 23912., 24900., 25888., 23008., 24000., 24992., 25984., 30546.,
      31704., 32862., 34020., 30660., 31824., 32988., 34152., 30774., 31944.,
      33114., 34284., 30888., 32064., 33240., 34416., 31002., 32184., 33366.,
      34548., 31116., 32304., 33492., 34680., 31230., 32424., 33618., 34812.,
      31344., 32544., 33744., 34944., 42585., 44322., 46059., 47796., 42738.,
      44484., 46230., 47976., 42891., 44646., 46401., 48156., 43044., 44808.,
      46572., 48336., 43197., 44970., 46743., 48516., 43350., 45132., 46914.,
      48696., 43503., 45294., 47085., 48876., 43656., 45456., 47256., 49056.,
      43809., 45618., 47427., 49236., 43962., 45780., 47598., 49416., 44115.,
      45942., 47769., 49596., 44268., 46104., 47940., 49776., 26274., 27456.,
      28638., 29820., 26364., 27552., 28740., 29928., 26454., 27648., 28842.,
      30036., 26544., 27744., 28944., 30144., 26634., 27840., 29046., 30252.,
      26724., 27936., 29148., 30360., 26814., 28032., 29250., 30468., 26904.,
      28128., 29352., 30576., 35562., 36984., 38406., 39828., 35676., 37104.,
      38532., 39960., 35790., 37224., 38658., 40092., 35904., 37344., 38784.,
      40224., 36018., 37464., 38910., 40356., 36132., 37584., 39036., 40488.,
      36246., 37704., 39162., 40620., 36360., 37824., 39288., 40752., 49317.,
      51450., 53583., 55716., 49470., 51612., 53754., 55896., 49623., 51774.,
      53925., 56076., 49776., 51936., 54096., 56256., 49929., 52098., 54267.,
      56436., 50082., 52260., 54438., 56616., 50235., 52422., 54609., 56796.,
      50388., 52584., 54780., 56976., 50541., 52746., 54951., 57156., 50694.,
      52908., 55122., 57336., 50847., 53070., 55293., 57516., 51000., 53232.,
      55464., 57696., 30234., 31680., 33126., 34572., 30324., 31776., 33228.,
      34680., 30414., 31872., 33330., 34788., 30504., 31968., 33432., 34896.,
      30594., 32064., 33534., 35004., 30684., 32160., 33636., 35112., 30774.,
      32256., 33738., 35220., 30864., 32352., 33840., 35328., 40578., 42264.,
      43950., 45636., 40692., 42384., 44076., 45768., 40806., 42504., 44202.,
      45900., 40920., 42624., 44328., 46032., 41034., 42744., 44454., 46164.,
      41148., 42864., 44580., 46296., 41262., 42984., 44706., 46428., 41376.,
      43104., 44832., 46560., 56049., 58578., 61107., 63636., 56202., 58740.,
      61278., 63816., 56355., 58902., 61449., 63996., 56508., 59064., 61620.,
      64176., 56661., 59226., 61791., 64356., 56814., 59388., 61962., 64536.,
      56967., 59550., 62133., 64716., 57120., 59712., 62304., 64896., 57273.,
      59874., 62475., 65076., 57426., 60036., 62646., 65256., 57579., 60198.,
      62817., 65436., 57732., 60360., 62988., 65616., 34194., 35904., 37614.,
      39324., 34284., 36000., 37716., 39432., 34374., 36096., 37818., 39540.,
      34464., 36192., 37920., 39648., 34554., 36288., 38022., 39756., 34644.,
      36384., 38124., 39864., 34734., 36480., 38226., 39972., 34824., 36576.,
      38328., 40080., 14500., 15448., 16396., 17344., 14552., 15504., 16456.,
      17408., 14604., 15560., 16516., 17472., 14656., 15616., 16576., 17536.,
      14708., 15672., 16636., 17600., 14760., 15728., 16696., 17664., 14812.,
      15784., 16756., 17728., 14864., 15840., 16816., 17792., 19066., 20488.,
      21910., 23332., 19132., 20560., 21988., 23416., 19198., 20632., 22066.,
      23500., 19264., 20704., 22144., 23584., 19330., 20776., 22222., 23668.,
      19396., 20848., 22300., 23752., 19462., 20920., 22378., 23836., 19528.,
      20992., 22456., 23920., 19594., 21064., 22534., 24004., 19660., 21136.,
      22612., 24088., 19726., 21208., 22690., 24172., 19792., 21280., 22768.,
      24256., 10852., 11816., 12780., 13744., 10888., 11856., 12824., 13792.,
      10924., 11896., 12868., 13840., 10960., 11936., 12912., 13888., 10996.,
      11976., 12956., 13936., 11032., 12016., 13000., 13984., 11068., 12056.,
      13044., 14032., 11104., 12096., 13088., 14080., 16788., 17912., 19036.,
      20160., 16840., 17968., 19096., 20224., 16892., 18024., 19156., 20288.,
      16944., 18080., 19216., 20352., 16996., 18136., 19276., 20416., 17048.,
      18192., 19336., 20480., 17100., 18248., 19396., 20544., 17152., 18304.,
      19456., 20608., 21970., 23656., 25342., 27028., 22036., 23728., 25420.,
      27112., 22102., 23800., 25498., 27196., 22168., 23872., 25576., 27280.,
      22234., 23944., 25654., 27364., 22300., 24016., 25732., 27448., 22366.,
      24088., 25810., 27532., 22432., 24160., 25888., 27616., 22498., 24232.,
      25966., 27700., 22564., 24304., 26044., 27784., 22630., 24376., 26122.,
      27868., 22696., 24448., 26200., 27952., 12436., 13576., 14716., 15856.,
      12472., 13616., 14760., 15904., 12508., 13656., 14804., 15952., 12544.,
      13696., 14848., 16000., 12580., 13736., 14892., 16048., 12616., 13776.,
      14936., 16096., 12652., 13816., 14980., 16144., 12688., 13856., 15024.,
      16192.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4188.,  4576.,  4964.,  5352.,  4216.,  4608.,  5000.,  5392.,  4244.,
      4640.,  5036.,  5432.,  4272.,  4672.,  5072.,  5472.,  4300.,  4704.,
      5108.,  5512.,  4328.,  4736.,  5144.,  5552.,  4356.,  4768.,  5180.,
      5592.,  4384.,  4800.,  5216.,  5632.,  4412.,  4832.,  5252.,  5672.,
      4440.,  4864.,  5288.,  5712.,  4468.,  4896.,  5324.,  5752.,  4496.,
      4928.,  5360.,  5792.,  4524.,  4960.,  5396.,  5832.,  4552.,  4992.,
      5432.,  5872.,  4580.,  5024.,  5468.,  5912.,  4608.,  5056.,  5504.,
      5952.,  4636.,  5088.,  5540.,  5992.,  4664.,  5120.,  5576.,  6032.,
      4692.,  5152.,  5612.,  6072.,  4720.,  5184.,  5648.,  6112.,  4748.,
      5216.,  5684.,  6152.,  4776.,  5248.,  5720.,  6192.,  4804.,  5280.,
      5756.,  6232.,  4832.,  5312.,  5792.,  6272.,  4860.,  5344.,  5828.,
      6312.,  4888.,  5376.,  5864.,  6352.,  4916.,  5408.,  5900.,  6392.,
      4944.,  5440.,  5936.,  6432.,  5420.,  5984.,  6548.,  7112.,  5448.,
      6016.,  6584.,  7152.,  5476.,  6048.,  6620.,  7192.,  5504.,  6080.,
      6656.,  7232.,  5532.,  6112.,  6692.,  7272.,  5560.,  6144.,  6728.,
      7312.,  5588.,  6176.,  6764.,  7352.,  5616.,  6208.,  6800.,  7392.,
      5644.,  6240.,  6836.,  7432.,  5672.,  6272.,  6872.,  7472.,  5700.,
      6304.,  6908.,  7512.,  5728.,  6336.,  6944.,  7552.,  5756.,  6368.,
      6980.,  7592.,  5784.,  6400.,  7016.,  7632.,  5812.,  6432.,  7052.,
      7672.,  5840.,  6464.,  7088.,  7712.,  5868.,  6496.,  7124.,  7752.,
      5896.,  6528.,  7160.,  7792.,  5924.,  6560.,  7196.,  7832.,  5952.,
      6592.,  7232.,  7872.,  5980.,  6624.,  7268.,  7912.,  6008.,  6656.,
      7304.,  7952.,  6036.,  6688.,  7340.,  7992.,  6064.,  6720.,  7376.,
      8032.,  6092.,  6752.,  7412.,  8072.,  6120.,  6784.,  7448.,  8112.,
      6148.,  6816.,  7484.,  8152.,  6176.,  6848.,  7520.,  8192.,  6652.,
      7392.,  8132.,  8872.,  6680.,  7424.,  8168.,  8912.,  6708.,  7456.,
      8204.,  8952.,  6736.,  7488.,  8240.,  8992.,  6764.,  7520.,  8276.,
      9032.,  6792.,  7552.,  8312.,  9072.,  6820.,  7584.,  8348.,  9112.,
      6848.,  7616.,  8384.,  9152.,  6876.,  7648.,  8420.,  9192.,  6904.,
      7680.,  8456.,  9232.,  6932.,  7712.,  8492.,  9272.,  6960.,  7744.,
      8528.,  9312.,  6988.,  7776.,  8564.,  9352.,  7016.,  7808.,  8600.,
      9392.,  7044.,  7840.,  8636.,  9432.,  7072.,  7872.,  8672.,  9472.,
      7100.,  7904.,  8708.,  9512.,  7128.,  7936.,  8744.,  9552.,  7156.,
      7968.,  8780.,  9592.,  7184.,  8000.,  8816.,  9632.,  7212.,  8032.,
      8852.,  9672.,  7240.,  8064.,  8888.,  9712.,  7268.,  8096.,  8924.,
      9752.,  7296.,  8128.,  8960.,  9792.,  7324.,  8160.,  8996.,  9832.,
      7352.,  8192.,  9032.,  9872.,  7380.,  8224.,  9068.,  9912.,  7408.,
      8256.,  9104.,  9952.,  7884.,  8800.,  9716.,  10632., 7912.,  8832.,
      9752.,  10672., 7940.,  8864.,  9788.,  10712., 7968.,  8896.,  9824.,
      10752., 7996.,  8928.,  9860.,  10792., 8024.,  8960.,  9896.,  10832.,
      8052.,  8992.,  9932.,  10872., 8080.,  9024.,  9968.,  10912., 8108.,
      9056.,  10004., 10952., 8136.,  9088.,  10040., 10992., 8164.,  9120.,
      10076., 11032., 8192.,  9152.,  10112., 11072., 8220.,  9184.,  10148.,
      11112., 8248.,  9216.,  10184., 11152., 8276.,  9248.,  10220., 11192.,
      8304.,  9280.,  10256., 11232., 8332.,  9312.,  10292., 11272., 8360.,
      9344.,  10328., 11312., 8388.,  9376.,  10364., 11352., 8416.,  9408.,
      10400., 11392., 8444.,  9440.,  10436., 11432., 8472.,  9472.,  10472.,
      11472., 8500.,  9504.,  10508., 11512., 8528.,  9536.,  10544., 11552.,
      8556.,  9568.,  10580., 11592., 8584.,  9600.,  10616., 11632., 8612.,
      9632.,  10652., 11672., 8640.,  9664.,  10688., 11712., 9116.,  10208.,
      11300., 12392., 9144.,  10240., 11336., 12432., 9172.,  10272., 11372.,
      12472., 9200.,  10304., 11408., 12512., 9228.,  10336., 11444., 12552.,
      9256.,  10368., 11480., 12592., 9284.,  10400., 11516., 12632., 9312.,
      10432., 11552., 12672., 9340.,  10464., 11588., 12712., 9368.,  10496.,
      11624., 12752., 9396.,  10528., 11660., 12792., 9424.,  10560., 11696.,
      12832., 9452.,  10592., 11732., 12872., 9480.,  10624., 11768., 12912.,
      9508.,  10656., 11804., 12952., 9536.,  10688., 11840., 12992., 9564.,
      10720., 11876., 13032., 9592.,  10752., 11912., 13072., 9620.,  10784.,
      11948., 13112., 9648.,  10816., 11984., 13152., 9676.,  10848., 12020.,
      13192., 9704.,  10880., 12056., 13232., 9732.,  10912., 12092., 13272.,
      9760.,  10944., 12128., 13312., 9788.,  10976., 12164., 13352., 9816.,
      11008., 12200., 13392., 9844.,  11040., 12236., 13432., 9872.,  11072.,
      12272., 13472., 10348., 11616., 12884., 14152., 10376., 11648., 12920.,
      14192., 10404., 11680., 12956., 14232., 10432., 11712., 12992., 14272.,
      10460., 11744., 13028., 14312., 10488., 11776., 13064., 14352., 10516.,
      11808., 13100., 14392., 10544., 11840., 13136., 14432., 10572., 11872.,
      13172., 14472., 10600., 11904., 13208., 14512., 10628., 11936., 13244.,
      14552., 10656., 11968., 13280., 14592., 10684., 12000., 13316., 14632.,
      10712., 12032., 13352., 14672., 10740., 12064., 13388., 14712., 10768.,
      12096., 13424., 14752., 10796., 12128., 13460., 14792., 10824., 12160.,
      13496., 14832., 10852., 12192., 13532., 14872., 10880., 12224., 13568.,
      14912., 10908., 12256., 13604., 14952., 10936., 12288., 13640., 14992.,
      10964., 12320., 13676., 15032., 10992., 12352., 13712., 15072., 11020.,
      12384., 13748., 15112., 11048., 12416., 13784., 15152., 11076., 12448.,
      13820., 15192., 11104., 12480., 13856., 15232., 11580., 13024., 14468.,
      15912., 11608., 13056., 14504., 15952., 11636., 13088., 14540., 15992.,
      11664., 13120., 14576., 16032., 11692., 13152., 14612., 16072., 11720.,
      13184., 14648., 16112., 11748., 13216., 14684., 16152., 11776., 13248.,
      14720., 16192., 11804., 13280., 14756., 16232., 11832., 13312., 14792.,
      16272., 11860., 13344., 14828., 16312., 11888., 13376., 14864., 16352.,
      11916., 13408., 14900., 16392., 11944., 13440., 14936., 16432., 11972.,
      13472., 14972., 16472., 12000., 13504., 15008., 16512., 12028., 13536.,
      15044., 16552., 12056., 13568., 15080., 16592., 12084., 13600., 15116.,
      16632., 12112., 13632., 15152., 16672., 12140., 13664., 15188., 16712.,
      12168., 13696., 15224., 16752., 12196., 13728., 15260., 16792., 12224.,
      13760., 15296., 16832., 12252., 13792., 15332., 16872., 12280., 13824.,
      15368., 16912., 12308., 13856., 15404., 16952., 12336., 13888., 15440.,
      16992.};
  const std::array<int, 4> in_shape = {{1, 11, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1660., 2299., 2338., 2377., 2416., 1468., 1492., 1996., 2767., 2806.,
      2845., 2884., 1756., 1780., 2364., 3273., 3318., 3363., 3408., 2067.,
      2094., 2760., 3813., 3858., 3903., 3948., 2391., 2418., 3156., 4353.,
      4398., 4443., 4488., 2715., 2742., 1204., 1597., 1618., 1639., 1660.,
      952.,  964.,  1396., 1849., 1870., 1891., 1912., 1096., 1108.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      370.,  380.,  390.,  400.,  410.,  420.,  430.,  490.,  500.,  510.,
      520.,  530.,  540.,  550.,  610.,  620.,  630.,  640.,  650.,  660.,
      670.,  730.,  740.,  750.,  760.,  770.,  780.,  790.,  850.,  860.,
      870.,  880.,  890.,  900.,  910.,  970.,  980.,  990.,  1000., 1010.,
      1020., 1030., 1090., 1100., 1110., 1120., 1130., 1140., 1150.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3104., 3320., 4280., 4598., 4352., 4676., 4424., 4754., 4496., 4832.,
      2716., 2936., 2760., 2984., 3728., 3992., 5144., 5534., 5216., 5612.,
      5288., 5690., 5360., 5768., 3244., 3512., 3288., 3560., 4404., 4728.,
      6069., 6546., 6150., 6636., 6231., 6726., 6312., 6816., 3804., 4134.,
      3852., 4188., 5124., 5520., 7041., 7626., 7122., 7716., 7203., 7806.,
      7284., 7896., 4380., 4782., 4428., 4836., 5844., 6312., 8013., 8706.,
      8094., 8796., 8175., 8886., 8256., 8976., 4956., 5430., 5004., 5484.,
      2144., 2408., 2804., 3194., 2840., 3236., 2876., 3278., 2912., 3320.,
      1636., 1904., 1656., 1928., 2480., 2792., 3236., 3698., 3272., 3740.,
      3308., 3782., 3344., 3824., 1876., 2192., 1896., 2216.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      632.,  740.,  648.,  760.,  664.,  780.,  680.,  800.,  696.,  820.,
      712.,  840.,  728.,  860.,  824.,  980.,  840.,  1000., 856.,  1020.,
      872.,  1040., 888.,  1060., 904.,  1080., 920.,  1100., 1016., 1220.,
      1032., 1240., 1048., 1260., 1064., 1280., 1080., 1300., 1096., 1320.,
      1112., 1340., 1208., 1460., 1224., 1480., 1240., 1500., 1256., 1520.,
      1272., 1540., 1288., 1560., 1304., 1580., 1400., 1700., 1416., 1720.,
      1432., 1740., 1448., 1760., 1464., 1780., 1480., 1800., 1496., 1820.,
      1592., 1940., 1608., 1960., 1624., 1980., 1640., 2000., 1656., 2020.,
      1672., 2040., 1688., 2060., 1784., 2180., 1800., 2200., 1816., 2220.,
      1832., 2240., 1848., 2260., 1864., 2280., 1880., 2300.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5992.,  6208.,  6424.,  6640.,  8242.,  8560.,  8878.,  9196.,  8380.,
      8704.,  9028.,  9352.,  8518.,  8848.,  9178.,  9508.,  8656.,  8992.,
      9328.,  9664.,  5212.,  5432.,  5652.,  5872.,  5296.,  5520.,  5744.,
      5968.,  7192.,  7456.,  7720.,  7984.,  9898.,  10288., 10678., 11068.,
      10036., 10432., 10828., 11224., 10174., 10576., 10978., 11380., 10312.,
      10720., 11128., 11536., 6220.,  6488.,  6756.,  7024.,  6304.,  6576.,
      6848.,  7120.,  8484.,  8808.,  9132.,  9456.,  11661., 12138., 12615.,
      13092., 11814., 12300., 12786., 13272., 11967., 12462., 12957., 13452.,
      12120., 12624., 13128., 13632., 7278.,  7608.,  7938.,  8268.,  7368.,
      7704.,  8040.,  8376.,  9852.,  10248., 10644., 11040., 13497., 14082.,
      14667., 15252., 13650., 14244., 14838., 15432., 13803., 14406., 15009.,
      15612., 13956., 14568., 15180., 15792., 8358.,  8760.,  9162.,  9564.,
      8448.,  8856.,  9264.,  9672.,  11220., 11688., 12156., 12624., 15333.,
      16026., 16719., 17412., 15486., 16188., 16890., 17592., 15639., 16350.,
      17061., 17772., 15792., 16512., 17232., 17952., 9438.,  9912.,  10386.,
      10860., 9528.,  10008., 10488., 10968., 4024.,  4288.,  4552.,  4816.,
      5218.,  5608.,  5998.,  6388.,  5284.,  5680.,  6076.,  6472.,  5350.,
      5752.,  6154.,  6556.,  5416.,  5824.,  6232.,  6640.,  3004.,  3272.,
      3540.,  3808.,  3040.,  3312.,  3584.,  3856.,  4648.,  4960.,  5272.,
      5584.,  6010.,  6472.,  6934.,  7396.,  6076.,  6544.,  7012.,  7480.,
      6142.,  6616.,  7090.,  7564.,  6208.,  6688.,  7168.,  7648.,  3436.,
      3752.,  4068.,  4384.,  3472.,  3792.,  4112.,  4432.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1156., 1264., 1372., 1480., 1184., 1296., 1408., 1520., 1212., 1328.,
      1444., 1560., 1240., 1360., 1480., 1600., 1268., 1392., 1516., 1640.,
      1296., 1424., 1552., 1680., 1324., 1456., 1588., 1720., 1492., 1648.,
      1804., 1960., 1520., 1680., 1840., 2000., 1548., 1712., 1876., 2040.,
      1576., 1744., 1912., 2080., 1604., 1776., 1948., 2120., 1632., 1808.,
      1984., 2160., 1660., 1840., 2020., 2200., 1828., 2032., 2236., 2440.,
      1856., 2064., 2272., 2480., 1884., 2096., 2308., 2520., 1912., 2128.,
      2344., 2560., 1940., 2160., 2380., 2600., 1968., 2192., 2416., 2640.,
      1996., 2224., 2452., 2680., 2164., 2416., 2668., 2920., 2192., 2448.,
      2704., 2960., 2220., 2480., 2740., 3000., 2248., 2512., 2776., 3040.,
      2276., 2544., 2812., 3080., 2304., 2576., 2848., 3120., 2332., 2608.,
      2884., 3160., 2500., 2800., 3100., 3400., 2528., 2832., 3136., 3440.,
      2556., 2864., 3172., 3480., 2584., 2896., 3208., 3520., 2612., 2928.,
      3244., 3560., 2640., 2960., 3280., 3600., 2668., 2992., 3316., 3640.,
      2836., 3184., 3532., 3880., 2864., 3216., 3568., 3920., 2892., 3248.,
      3604., 3960., 2920., 3280., 3640., 4000., 2948., 3312., 3676., 4040.,
      2976., 3344., 3712., 4080., 3004., 3376., 3748., 4120., 3172., 3568.,
      3964., 4360., 3200., 3600., 4000., 4400., 3228., 3632., 4036., 4440.,
      3256., 3664., 4072., 4480., 3284., 3696., 4108., 4520., 3312., 3728.,
      4144., 4560., 3340., 3760., 4180., 4600.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3292., 3320., 4559., 4598., 4637., 4676., 4715., 4754., 4793., 4832.,
      2912., 2936., 2960., 2984., 3964., 3992., 5495., 5534., 5573., 5612.,
      5651., 5690., 5729., 5768., 3488., 3512., 3536., 3560., 4695., 4728.,
      6501., 6546., 6591., 6636., 6681., 6726., 6771., 6816., 4107., 4134.,
      4161., 4188., 5487., 5520., 7581., 7626., 7671., 7716., 7761., 7806.,
      7851., 7896., 4755., 4782., 4809., 4836., 6279., 6312., 8661., 8706.,
      8751., 8796., 8841., 8886., 8931., 8976., 5403., 5430., 5457., 5484.,
      2392., 2408., 3173., 3194., 3215., 3236., 3257., 3278., 3299., 3320.,
      1892., 1904., 1916., 1928., 2776., 2792., 3677., 3698., 3719., 3740.,
      3761., 3782., 3803., 3824., 2180., 2192., 2204., 2216.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      730.,  740.,  750.,  760.,  770.,  780.,  790.,  800.,  810.,  820.,
      830.,  840.,  850.,  860.,  970.,  980.,  990.,  1000., 1010., 1020.,
      1030., 1040., 1050., 1060., 1070., 1080., 1090., 1100., 1210., 1220.,
      1230., 1240., 1250., 1260., 1270., 1280., 1290., 1300., 1310., 1320.,
      1330., 1340., 1450., 1460., 1470., 1480., 1490., 1500., 1510., 1520.,
      1530., 1540., 1550., 1560., 1570., 1580., 1690., 1700., 1710., 1720.,
      1730., 1740., 1750., 1760., 1770., 1780., 1790., 1800., 1810., 1820.,
      1930., 1940., 1950., 1960., 1970., 1980., 1990., 2000., 2010., 2020.,
      2030., 2040., 2050., 2060., 2170., 2180., 2190., 2200., 2210., 2220.,
      2230., 2240., 2250., 2260., 2270., 2280., 2290., 2300.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6156.,  6584.,  6208.,  6640.,  8488.,  9118.,  8560.,  9196.,  8632.,
      9274.,  8704.,  9352.,  8776.,  9430.,  8848.,  9508.,  8920.,  9586.,
      8992.,  9664.,  5388.,  5824.,  5432.,  5872.,  5476.,  5920.,  5520.,
      5968.,  7404.,  7928.,  7456.,  7984.,  10216., 10990., 10288., 11068.,
      10360., 11146., 10432., 11224., 10504., 11302., 10576., 11380., 10648.,
      11458., 10720., 11536., 6444.,  6976.,  6488.,  7024.,  6532.,  7072.,
      6576.,  7120.,  8748.,  9390.,  8808.,  9456.,  12057., 13002., 12138.,
      13092., 12219., 13182., 12300., 13272., 12381., 13362., 12462., 13452.,
      12543., 13542., 12624., 13632., 7560.,  8214.,  7608.,  8268.,  7656.,
      8322.,  7704.,  8376.,  10188., 10974., 10248., 11040., 14001., 15162.,
      14082., 15252., 14163., 15342., 14244., 15432., 14325., 15522., 14406.,
      15612., 14487., 15702., 14568., 15792., 8712.,  9510.,  8760.,  9564.,
      8808.,  9618.,  8856.,  9672.,  11628., 12558., 11688., 12624., 15945.,
      17322., 16026., 17412., 16107., 17502., 16188., 17592., 16269., 17682.,
      16350., 17772., 16431., 17862., 16512., 17952., 9864.,  10806., 9912.,
      10860., 9960.,  10914., 10008., 10968., 4260.,  4784.,  4288.,  4816.,
      5572.,  6346.,  5608.,  6388.,  5644.,  6430.,  5680.,  6472.,  5716.,
      6514.,  5752.,  6556.,  5788.,  6598.,  5824.,  6640.,  3252.,  3784.,
      3272.,  3808.,  3292.,  3832.,  3312.,  3856.,  4932.,  5552.,  4960.,
      5584.,  6436.,  7354.,  6472.,  7396.,  6508.,  7438.,  6544.,  7480.,
      6580.,  7522.,  6616.,  7564.,  6652.,  7606.,  6688.,  7648.,  3732.,
      4360.,  3752.,  4384.,  3772.,  4408.,  3792.,  4432.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1248., 1460., 1264., 1480., 1280., 1500., 1296., 1520., 1312., 1540.,
      1328., 1560., 1344., 1580., 1360., 1600., 1376., 1620., 1392., 1640.,
      1408., 1660., 1424., 1680., 1440., 1700., 1456., 1720., 1632., 1940.,
      1648., 1960., 1664., 1980., 1680., 2000., 1696., 2020., 1712., 2040.,
      1728., 2060., 1744., 2080., 1760., 2100., 1776., 2120., 1792., 2140.,
      1808., 2160., 1824., 2180., 1840., 2200., 2016., 2420., 2032., 2440.,
      2048., 2460., 2064., 2480., 2080., 2500., 2096., 2520., 2112., 2540.,
      2128., 2560., 2144., 2580., 2160., 2600., 2176., 2620., 2192., 2640.,
      2208., 2660., 2224., 2680., 2400., 2900., 2416., 2920., 2432., 2940.,
      2448., 2960., 2464., 2980., 2480., 3000., 2496., 3020., 2512., 3040.,
      2528., 3060., 2544., 3080., 2560., 3100., 2576., 3120., 2592., 3140.,
      2608., 3160., 2784., 3380., 2800., 3400., 2816., 3420., 2832., 3440.,
      2848., 3460., 2864., 3480., 2880., 3500., 2896., 3520., 2912., 3540.,
      2928., 3560., 2944., 3580., 2960., 3600., 2976., 3620., 2992., 3640.,
      3168., 3860., 3184., 3880., 3200., 3900., 3216., 3920., 3232., 3940.,
      3248., 3960., 3264., 3980., 3280., 4000., 3296., 4020., 3312., 4040.,
      3328., 4060., 3344., 4080., 3360., 4100., 3376., 4120., 3552., 4340.,
      3568., 4360., 3584., 4380., 3600., 4400., 3616., 4420., 3632., 4440.,
      3648., 4460., 3664., 4480., 3680., 4500., 3696., 4520., 3712., 4540.,
      3728., 4560., 3744., 4580., 3760., 4600.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11884., 12312., 12740., 13168., 11984., 12416., 12848., 13280., 16346.,
      16976., 17606., 18236., 16484., 17120., 17756., 18392., 16622., 17264.,
      17906., 18548., 16760., 17408., 18056., 18704., 16898., 17552., 18206.,
      18860., 17036., 17696., 18356., 19016., 17174., 17840., 18506., 19172.,
      17312., 17984., 18656., 19328., 10340., 10776., 11212., 11648., 10424.,
      10864., 11304., 11744., 10508., 10952., 11396., 11840., 10592., 11040.,
      11488., 11936., 14284., 14808., 15332., 15856., 14384., 14912., 15440.,
      15968., 19658., 20432., 21206., 21980., 19796., 20576., 21356., 22136.,
      19934., 20720., 21506., 22292., 20072., 20864., 21656., 22448., 20210.,
      21008., 21806., 22604., 20348., 21152., 21956., 22760., 20486., 21296.,
      22106., 22916., 20624., 21440., 22256., 23072., 12356., 12888., 13420.,
      13952., 12440., 12976., 13512., 14048., 12524., 13064., 13604., 14144.,
      12608., 13152., 13696., 14240., 16854., 17496., 18138., 18780., 16968.,
      17616., 18264., 18912., 23169., 24114., 25059., 26004., 23322., 24276.,
      25230., 26184., 23475., 24438., 25401., 26364., 23628., 24600., 25572.,
      26544., 23781., 24762., 25743., 26724., 23934., 24924., 25914., 26904.,
      24087., 25086., 26085., 27084., 24240., 25248., 26256., 27264., 14466.,
      15120., 15774., 16428., 14556., 15216., 15876., 16536., 14646., 15312.,
      15978., 16644., 14736., 15408., 16080., 16752., 19590., 20376., 21162.,
      21948., 19704., 20496., 21288., 22080., 26841., 28002., 29163., 30324.,
      26994., 28164., 29334., 30504., 27147., 28326., 29505., 30684., 27300.,
      28488., 29676., 30864., 27453., 28650., 29847., 31044., 27606., 28812.,
      30018., 31224., 27759., 28974., 30189., 31404., 27912., 29136., 30360.,
      31584., 16626., 17424., 18222., 19020., 16716., 17520., 18324., 19128.,
      16806., 17616., 18426., 19236., 16896., 17712., 18528., 19344., 22326.,
      23256., 24186., 25116., 22440., 23376., 24312., 25248., 30513., 31890.,
      33267., 34644., 30666., 32052., 33438., 34824., 30819., 32214., 33609.,
      35004., 30972., 32376., 33780., 35184., 31125., 32538., 33951., 35364.,
      31278., 32700., 34122., 35544., 31431., 32862., 34293., 35724., 31584.,
      33024., 34464., 35904., 18786., 19728., 20670., 21612., 18876., 19824.,
      20772., 21720., 18966., 19920., 20874., 21828., 19056., 20016., 20976.,
      21936., 7996.,  8520.,  9044.,  9568.,  8048.,  8576.,  9104.,  9632.,
      10370., 11144., 11918., 12692., 10436., 11216., 11996., 12776., 10502.,
      11288., 12074., 12860., 10568., 11360., 12152., 12944., 10634., 11432.,
      12230., 13028., 10700., 11504., 12308., 13112., 10766., 11576., 12386.,
      13196., 10832., 11648., 12464., 13280., 5972.,  6504.,  7036.,  7568.,
      6008.,  6544.,  7080.,  7616.,  6044.,  6584.,  7124.,  7664.,  6080.,
      6624.,  7168.,  7712.,  9244.,  9864.,  10484., 11104., 9296.,  9920.,
      10544., 11168., 11954., 12872., 13790., 14708., 12020., 12944., 13868.,
      14792., 12086., 13016., 13946., 14876., 12152., 13088., 14024., 14960.,
      12218., 13160., 14102., 15044., 12284., 13232., 14180., 15128., 12350.,
      13304., 14258., 15212., 12416., 13376., 14336., 15296., 6836.,  7464.,
      8092.,  8720.,  6872.,  7504.,  8136.,  8768.,  6908.,  7544.,  8180.,
      8816.,  6944.,  7584.,  8224.,  8864.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2284., 2496., 2708., 2920., 2312., 2528., 2744., 2960., 2340., 2560.,
      2780., 3000., 2368., 2592., 2816., 3040., 2396., 2624., 2852., 3080.,
      2424., 2656., 2888., 3120., 2452., 2688., 2924., 3160., 2480., 2720.,
      2960., 3200., 2508., 2752., 2996., 3240., 2536., 2784., 3032., 3280.,
      2564., 2816., 3068., 3320., 2592., 2848., 3104., 3360., 2620., 2880.,
      3140., 3400., 2648., 2912., 3176., 3440., 2956., 3264., 3572., 3880.,
      2984., 3296., 3608., 3920., 3012., 3328., 3644., 3960., 3040., 3360.,
      3680., 4000., 3068., 3392., 3716., 4040., 3096., 3424., 3752., 4080.,
      3124., 3456., 3788., 4120., 3152., 3488., 3824., 4160., 3180., 3520.,
      3860., 4200., 3208., 3552., 3896., 4240., 3236., 3584., 3932., 4280.,
      3264., 3616., 3968., 4320., 3292., 3648., 4004., 4360., 3320., 3680.,
      4040., 4400., 3628., 4032., 4436., 4840., 3656., 4064., 4472., 4880.,
      3684., 4096., 4508., 4920., 3712., 4128., 4544., 4960., 3740., 4160.,
      4580., 5000., 3768., 4192., 4616., 5040., 3796., 4224., 4652., 5080.,
      3824., 4256., 4688., 5120., 3852., 4288., 4724., 5160., 3880., 4320.,
      4760., 5200., 3908., 4352., 4796., 5240., 3936., 4384., 4832., 5280.,
      3964., 4416., 4868., 5320., 3992., 4448., 4904., 5360., 4300., 4800.,
      5300., 5800., 4328., 4832., 5336., 5840., 4356., 4864., 5372., 5880.,
      4384., 4896., 5408., 5920., 4412., 4928., 5444., 5960., 4440., 4960.,
      5480., 6000., 4468., 4992., 5516., 6040., 4496., 5024., 5552., 6080.,
      4524., 5056., 5588., 6120., 4552., 5088., 5624., 6160., 4580., 5120.,
      5660., 6200., 4608., 5152., 5696., 6240., 4636., 5184., 5732., 6280.,
      4664., 5216., 5768., 6320., 4972., 5568., 6164., 6760., 5000., 5600.,
      6200., 6800., 5028., 5632., 6236., 6840., 5056., 5664., 6272., 6880.,
      5084., 5696., 6308., 6920., 5112., 5728., 6344., 6960., 5140., 5760.,
      6380., 7000., 5168., 5792., 6416., 7040., 5196., 5824., 6452., 7080.,
      5224., 5856., 6488., 7120., 5252., 5888., 6524., 7160., 5280., 5920.,
      6560., 7200., 5308., 5952., 6596., 7240., 5336., 5984., 6632., 7280.,
      5644., 6336., 7028., 7720., 5672., 6368., 7064., 7760., 5700., 6400.,
      7100., 7800., 5728., 6432., 7136., 7840., 5756., 6464., 7172., 7880.,
      5784., 6496., 7208., 7920., 5812., 6528., 7244., 7960., 5840., 6560.,
      7280., 8000., 5868., 6592., 7316., 8040., 5896., 6624., 7352., 8080.,
      5924., 6656., 7388., 8120., 5952., 6688., 7424., 8160., 5980., 6720.,
      7460., 8200., 6008., 6752., 7496., 8240., 6316., 7104., 7892., 8680.,
      6344., 7136., 7928., 8720., 6372., 7168., 7964., 8760., 6400., 7200.,
      8000., 8800., 6428., 7232., 8036., 8840., 6456., 7264., 8072., 8880.,
      6484., 7296., 8108., 8920., 6512., 7328., 8144., 8960., 6540., 7360.,
      8180., 9000., 6568., 7392., 8216., 9040., 6596., 7424., 8252., 9080.,
      6624., 7456., 8288., 9120., 6652., 7488., 8324., 9160., 6680., 7520.,
      8360., 9200.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6556.,  6584.,  6612.,  6640.,  9079.,  9118.,  9157.,  9196.,  9235.,
      9274.,  9313.,  9352.,  9391.,  9430.,  9469.,  9508.,  9547.,  9586.,
      9625.,  9664.,  5800.,  5824.,  5848.,  5872.,  5896.,  5920.,  5944.,
      5968.,  7900.,  7928.,  7956.,  7984.,  10951., 10990., 11029., 11068.,
      11107., 11146., 11185., 11224., 11263., 11302., 11341., 11380., 11419.,
      11458., 11497., 11536., 6952.,  6976.,  7000.,  7024.,  7048.,  7072.,
      7096.,  7120.,  9357.,  9390.,  9423.,  9456.,  12957., 13002., 13047.,
      13092., 13137., 13182., 13227., 13272., 13317., 13362., 13407., 13452.,
      13497., 13542., 13587., 13632., 8187.,  8214.,  8241.,  8268.,  8295.,
      8322.,  8349.,  8376.,  10941., 10974., 11007., 11040., 15117., 15162.,
      15207., 15252., 15297., 15342., 15387., 15432., 15477., 15522., 15567.,
      15612., 15657., 15702., 15747., 15792., 9483.,  9510.,  9537.,  9564.,
      9591.,  9618.,  9645.,  9672.,  12525., 12558., 12591., 12624., 17277.,
      17322., 17367., 17412., 17457., 17502., 17547., 17592., 17637., 17682.,
      17727., 17772., 17817., 17862., 17907., 17952., 10779., 10806., 10833.,
      10860., 10887., 10914., 10941., 10968., 4768.,  4784.,  4800.,  4816.,
      6325.,  6346.,  6367.,  6388.,  6409.,  6430.,  6451.,  6472.,  6493.,
      6514.,  6535.,  6556.,  6577.,  6598.,  6619.,  6640.,  3772.,  3784.,
      3796.,  3808.,  3820.,  3832.,  3844.,  3856.,  5536.,  5552.,  5568.,
      5584.,  7333.,  7354.,  7375.,  7396.,  7417.,  7438.,  7459.,  7480.,
      7501.,  7522.,  7543.,  7564.,  7585.,  7606.,  7627.,  7648.,  4348.,
      4360.,  4372.,  4384.,  4396.,  4408.,  4420.,  4432.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1450., 1460., 1470., 1480., 1490., 1500., 1510., 1520., 1530., 1540.,
      1550., 1560., 1570., 1580., 1590., 1600., 1610., 1620., 1630., 1640.,
      1650., 1660., 1670., 1680., 1690., 1700., 1710., 1720., 1930., 1940.,
      1950., 1960., 1970., 1980., 1990., 2000., 2010., 2020., 2030., 2040.,
      2050., 2060., 2070., 2080., 2090., 2100., 2110., 2120., 2130., 2140.,
      2150., 2160., 2170., 2180., 2190., 2200., 2410., 2420., 2430., 2440.,
      2450., 2460., 2470., 2480., 2490., 2500., 2510., 2520., 2530., 2540.,
      2550., 2560., 2570., 2580., 2590., 2600., 2610., 2620., 2630., 2640.,
      2650., 2660., 2670., 2680., 2890., 2900., 2910., 2920., 2930., 2940.,
      2950., 2960., 2970., 2980., 2990., 3000., 3010., 3020., 3030., 3040.,
      3050., 3060., 3070., 3080., 3090., 3100., 3110., 3120., 3130., 3140.,
      3150., 3160., 3370., 3380., 3390., 3400., 3410., 3420., 3430., 3440.,
      3450., 3460., 3470., 3480., 3490., 3500., 3510., 3520., 3530., 3540.,
      3550., 3560., 3570., 3580., 3590., 3600., 3610., 3620., 3630., 3640.,
      3850., 3860., 3870., 3880., 3890., 3900., 3910., 3920., 3930., 3940.,
      3950., 3960., 3970., 3980., 3990., 4000., 4010., 4020., 4030., 4040.,
      4050., 4060., 4070., 4080., 4090., 4100., 4110., 4120., 4330., 4340.,
      4350., 4360., 4370., 4380., 4390., 4400., 4410., 4420., 4430., 4440.,
      4450., 4460., 4470., 4480., 4490., 4500., 4510., 4520., 4530., 4540.,
      4550., 4560., 4570., 4580., 4590., 4600.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12260., 13112., 12312., 13168., 12364., 13224., 12416., 13280., 16904.,
      18158., 16976., 18236., 17048., 18314., 17120., 18392., 17192., 18470.,
      17264., 18548., 17336., 18626., 17408., 18704., 17480., 18782., 17552.,
      18860., 17624., 18938., 17696., 19016., 17768., 19094., 17840., 19172.,
      17912., 19250., 17984., 19328., 10732., 11600., 10776., 11648., 10820.,
      11696., 10864., 11744., 10908., 11792., 10952., 11840., 10996., 11888.,
      11040., 11936., 14756., 15800., 14808., 15856., 14860., 15912., 14912.,
      15968., 20360., 21902., 20432., 21980., 20504., 22058., 20576., 22136.,
      20648., 22214., 20720., 22292., 20792., 22370., 20864., 22448., 20936.,
      22526., 21008., 22604., 21080., 22682., 21152., 22760., 21224., 22838.,
      21296., 22916., 21368., 22994., 21440., 23072., 12844., 13904., 12888.,
      13952., 12932., 14000., 12976., 14048., 13020., 14096., 13064., 14144.,
      13108., 14192., 13152., 14240., 17436., 18714., 17496., 18780., 17556.,
      18846., 17616., 18912., 24033., 25914., 24114., 26004., 24195., 26094.,
      24276., 26184., 24357., 26274., 24438., 26364., 24519., 26454., 24600.,
      26544., 24681., 26634., 24762., 26724., 24843., 26814., 24924., 26904.,
      25005., 26994., 25086., 27084., 25167., 27174., 25248., 27264., 15072.,
      16374., 15120., 16428., 15168., 16482., 15216., 16536., 15264., 16590.,
      15312., 16644., 15360., 16698., 15408., 16752., 20316., 21882., 20376.,
      21948., 20436., 22014., 20496., 22080., 27921., 30234., 28002., 30324.,
      28083., 30414., 28164., 30504., 28245., 30594., 28326., 30684., 28407.,
      30774., 28488., 30864., 28569., 30954., 28650., 31044., 28731., 31134.,
      28812., 31224., 28893., 31314., 28974., 31404., 29055., 31494., 29136.,
      31584., 17376., 18966., 17424., 19020., 17472., 19074., 17520., 19128.,
      17568., 19182., 17616., 19236., 17664., 19290., 17712., 19344., 23196.,
      25050., 23256., 25116., 23316., 25182., 23376., 25248., 31809., 34554.,
      31890., 34644., 31971., 34734., 32052., 34824., 32133., 34914., 32214.,
      35004., 32295., 35094., 32376., 35184., 32457., 35274., 32538., 35364.,
      32619., 35454., 32700., 35544., 32781., 35634., 32862., 35724., 32943.,
      35814., 33024., 35904., 19680., 21558., 19728., 21612., 19776., 21666.,
      19824., 21720., 19872., 21774., 19920., 21828., 19968., 21882., 20016.,
      21936., 8492.,  9536.,  8520.,  9568.,  8548.,  9600.,  8576.,  9632.,
      11108., 12650., 11144., 12692., 11180., 12734., 11216., 12776., 11252.,
      12818., 11288., 12860., 11324., 12902., 11360., 12944., 11396., 12986.,
      11432., 13028., 11468., 13070., 11504., 13112., 11540., 13154., 11576.,
      13196., 11612., 13238., 11648., 13280., 6484.,  7544.,  6504.,  7568.,
      6524.,  7592.,  6544.,  7616.,  6564.,  7640.,  6584.,  7664.,  6604.,
      7688.,  6624.,  7712.,  9836.,  11072., 9864.,  11104., 9892.,  11136.,
      9920.,  11168., 12836., 14666., 12872., 14708., 12908., 14750., 12944.,
      14792., 12980., 14834., 13016., 14876., 13052., 14918., 13088., 14960.,
      13124., 15002., 13160., 15044., 13196., 15086., 13232., 15128., 13268.,
      15170., 13304., 15212., 13340., 15254., 13376., 15296., 7444.,  8696.,
      7464.,  8720.,  7484.,  8744.,  7504.,  8768.,  7524.,  8792.,  7544.,
      8816.,  7564.,  8840.,  7584.,  8864.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2480., 2900., 2496., 2920., 2512., 2940., 2528., 2960., 2544., 2980.,
      2560., 3000., 2576., 3020., 2592., 3040., 2608., 3060., 2624., 3080.,
      2640., 3100., 2656., 3120., 2672., 3140., 2688., 3160., 2704., 3180.,
      2720., 3200., 2736., 3220., 2752., 3240., 2768., 3260., 2784., 3280.,
      2800., 3300., 2816., 3320., 2832., 3340., 2848., 3360., 2864., 3380.,
      2880., 3400., 2896., 3420., 2912., 3440., 3248., 3860., 3264., 3880.,
      3280., 3900., 3296., 3920., 3312., 3940., 3328., 3960., 3344., 3980.,
      3360., 4000., 3376., 4020., 3392., 4040., 3408., 4060., 3424., 4080.,
      3440., 4100., 3456., 4120., 3472., 4140., 3488., 4160., 3504., 4180.,
      3520., 4200., 3536., 4220., 3552., 4240., 3568., 4260., 3584., 4280.,
      3600., 4300., 3616., 4320., 3632., 4340., 3648., 4360., 3664., 4380.,
      3680., 4400., 4016., 4820., 4032., 4840., 4048., 4860., 4064., 4880.,
      4080., 4900., 4096., 4920., 4112., 4940., 4128., 4960., 4144., 4980.,
      4160., 5000., 4176., 5020., 4192., 5040., 4208., 5060., 4224., 5080.,
      4240., 5100., 4256., 5120., 4272., 5140., 4288., 5160., 4304., 5180.,
      4320., 5200., 4336., 5220., 4352., 5240., 4368., 5260., 4384., 5280.,
      4400., 5300., 4416., 5320., 4432., 5340., 4448., 5360., 4784., 5780.,
      4800., 5800., 4816., 5820., 4832., 5840., 4848., 5860., 4864., 5880.,
      4880., 5900., 4896., 5920., 4912., 5940., 4928., 5960., 4944., 5980.,
      4960., 6000., 4976., 6020., 4992., 6040., 5008., 6060., 5024., 6080.,
      5040., 6100., 5056., 6120., 5072., 6140., 5088., 6160., 5104., 6180.,
      5120., 6200., 5136., 6220., 5152., 6240., 5168., 6260., 5184., 6280.,
      5200., 6300., 5216., 6320., 5552., 6740., 5568., 6760., 5584., 6780.,
      5600., 6800., 5616., 6820., 5632., 6840., 5648., 6860., 5664., 6880.,
      5680., 6900., 5696., 6920., 5712., 6940., 5728., 6960., 5744., 6980.,
      5760., 7000., 5776., 7020., 5792., 7040., 5808., 7060., 5824., 7080.,
      5840., 7100., 5856., 7120., 5872., 7140., 5888., 7160., 5904., 7180.,
      5920., 7200., 5936., 7220., 5952., 7240., 5968., 7260., 5984., 7280.,
      6320., 7700., 6336., 7720., 6352., 7740., 6368., 7760., 6384., 7780.,
      6400., 7800., 6416., 7820., 6432., 7840., 6448., 7860., 6464., 7880.,
      6480., 7900., 6496., 7920., 6512., 7940., 6528., 7960., 6544., 7980.,
      6560., 8000., 6576., 8020., 6592., 8040., 6608., 8060., 6624., 8080.,
      6640., 8100., 6656., 8120., 6672., 8140., 6688., 8160., 6704., 8180.,
      6720., 8200., 6736., 8220., 6752., 8240., 7088., 8660., 7104., 8680.,
      7120., 8700., 7136., 8720., 7152., 8740., 7168., 8760., 7184., 8780.,
      7200., 8800., 7216., 8820., 7232., 8840., 7248., 8860., 7264., 8880.,
      7280., 8900., 7296., 8920., 7312., 8940., 7328., 8960., 7344., 8980.,
      7360., 9000., 7376., 9020., 7392., 9040., 7408., 9060., 7424., 9080.,
      7440., 9100., 7456., 9120., 7472., 9140., 7488., 9160., 7504., 9180.,
      7520., 9200.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23668., 24520., 25372., 26224., 23768., 24624., 25480., 26336., 23868.,
      24728., 25588., 26448., 23968., 24832., 25696., 26560., 32554., 33808.,
      35062., 36316., 32692., 33952., 35212., 36472., 32830., 34096., 35362.,
      36628., 32968., 34240., 35512., 36784., 33106., 34384., 35662., 36940.,
      33244., 34528., 35812., 37096., 33382., 34672., 35962., 37252., 33520.,
      34816., 36112., 37408., 33658., 34960., 36262., 37564., 33796., 35104.,
      36412., 37720., 33934., 35248., 36562., 37876., 34072., 35392., 36712.,
      38032., 34210., 35536., 36862., 38188., 34348., 35680., 37012., 38344.,
      34486., 35824., 37162., 38500., 34624., 35968., 37312., 38656., 20596.,
      21464., 22332., 23200., 20680., 21552., 22424., 23296., 20764., 21640.,
      22516., 23392., 20848., 21728., 22608., 23488., 20932., 21816., 22700.,
      23584., 21016., 21904., 22792., 23680., 21100., 21992., 22884., 23776.,
      21184., 22080., 22976., 23872., 28468., 29512., 30556., 31600., 28568.,
      29616., 30664., 31712., 28668., 29720., 30772., 31824., 28768., 29824.,
      30880., 31936., 39178., 40720., 42262., 43804., 39316., 40864., 42412.,
      43960., 39454., 41008., 42562., 44116., 39592., 41152., 42712., 44272.,
      39730., 41296., 42862., 44428., 39868., 41440., 43012., 44584., 40006.,
      41584., 43162., 44740., 40144., 41728., 43312., 44896., 40282., 41872.,
      43462., 45052., 40420., 42016., 43612., 45208., 40558., 42160., 43762.,
      45364., 40696., 42304., 43912., 45520., 40834., 42448., 44062., 45676.,
      40972., 42592., 44212., 45832., 41110., 42736., 44362., 45988., 41248.,
      42880., 44512., 46144., 24628., 25688., 26748., 27808., 24712., 25776.,
      26840., 27904., 24796., 25864., 26932., 28000., 24880., 25952., 27024.,
      28096., 24964., 26040., 27116., 28192., 25048., 26128., 27208., 28288.,
      25132., 26216., 27300., 28384., 25216., 26304., 27392., 28480., 33594.,
      34872., 36150., 37428., 33708., 34992., 36276., 37560., 33822., 35112.,
      36402., 37692., 33936., 35232., 36528., 37824., 46185., 48066., 49947.,
      51828., 46338., 48228., 50118., 52008., 46491., 48390., 50289., 52188.,
      46644., 48552., 50460., 52368., 46797., 48714., 50631., 52548., 46950.,
      48876., 50802., 52728., 47103., 49038., 50973., 52908., 47256., 49200.,
      51144., 53088., 47409., 49362., 51315., 53268., 47562., 49524., 51486.,
      53448., 47715., 49686., 51657., 53628., 47868., 49848., 51828., 53808.,
      48021., 50010., 51999., 53988., 48174., 50172., 52170., 54168., 48327.,
      50334., 52341., 54348., 48480., 50496., 52512., 54528., 28842., 30144.,
      31446., 32748., 28932., 30240., 31548., 32856., 29022., 30336., 31650.,
      32964., 29112., 30432., 31752., 33072., 29202., 30528., 31854., 33180.,
      29292., 30624., 31956., 33288., 29382., 30720., 32058., 33396., 29472.,
      30816., 32160., 33504., 39066., 40632., 42198., 43764., 39180., 40752.,
      42324., 43896., 39294., 40872., 42450., 44028., 39408., 40992., 42576.,
      44160., 53529., 55842., 58155., 60468., 53682., 56004., 58326., 60648.,
      53835., 56166., 58497., 60828., 53988., 56328., 58668., 61008., 54141.,
      56490., 58839., 61188., 54294., 56652., 59010., 61368., 54447., 56814.,
      59181., 61548., 54600., 56976., 59352., 61728., 54753., 57138., 59523.,
      61908., 54906., 57300., 59694., 62088., 55059., 57462., 59865., 62268.,
      55212., 57624., 60036., 62448., 55365., 57786., 60207., 62628., 55518.,
      57948., 60378., 62808., 55671., 58110., 60549., 62988., 55824., 58272.,
      60720., 63168., 33162., 34752., 36342., 37932., 33252., 34848., 36444.,
      38040., 33342., 34944., 36546., 38148., 33432., 35040., 36648., 38256.,
      33522., 35136., 36750., 38364., 33612., 35232., 36852., 38472., 33702.,
      35328., 36954., 38580., 33792., 35424., 37056., 38688., 44538., 46392.,
      48246., 50100., 44652., 46512., 48372., 50232., 44766., 46632., 48498.,
      50364., 44880., 46752., 48624., 50496., 60873., 63618., 66363., 69108.,
      61026., 63780., 66534., 69288., 61179., 63942., 66705., 69468., 61332.,
      64104., 66876., 69648., 61485., 64266., 67047., 69828., 61638., 64428.,
      67218., 70008., 61791., 64590., 67389., 70188., 61944., 64752., 67560.,
      70368., 62097., 64914., 67731., 70548., 62250., 65076., 67902., 70728.,
      62403., 65238., 68073., 70908., 62556., 65400., 68244., 71088., 62709.,
      65562., 68415., 71268., 62862., 65724., 68586., 71448., 63015., 65886.,
      68757., 71628., 63168., 66048., 68928., 71808., 37482., 39360., 41238.,
      43116., 37572., 39456., 41340., 43224., 37662., 39552., 41442., 43332.,
      37752., 39648., 41544., 43440., 37842., 39744., 41646., 43548., 37932.,
      39840., 41748., 43656., 38022., 39936., 41850., 43764., 38112., 40032.,
      41952., 43872., 15940., 16984., 18028., 19072., 15992., 17040., 18088.,
      19136., 16044., 17096., 18148., 19200., 16096., 17152., 18208., 19264.,
      20674., 22216., 23758., 25300., 20740., 22288., 23836., 25384., 20806.,
      22360., 23914., 25468., 20872., 22432., 23992., 25552., 20938., 22504.,
      24070., 25636., 21004., 22576., 24148., 25720., 21070., 22648., 24226.,
      25804., 21136., 22720., 24304., 25888., 21202., 22792., 24382., 25972.,
      21268., 22864., 24460., 26056., 21334., 22936., 24538., 26140., 21400.,
      23008., 24616., 26224., 21466., 23080., 24694., 26308., 21532., 23152.,
      24772., 26392., 21598., 23224., 24850., 26476., 21664., 23296., 24928.,
      26560., 11908., 12968., 14028., 15088., 11944., 13008., 14072., 15136.,
      11980., 13048., 14116., 15184., 12016., 13088., 14160., 15232., 12052.,
      13128., 14204., 15280., 12088., 13168., 14248., 15328., 12124., 13208.,
      14292., 15376., 12160., 13248., 14336., 15424., 18436., 19672., 20908.,
      22144., 18488., 19728., 20968., 22208., 18540., 19784., 21028., 22272.,
      18592., 19840., 21088., 22336., 23842., 25672., 27502., 29332., 23908.,
      25744., 27580., 29416., 23974., 25816., 27658., 29500., 24040., 25888.,
      27736., 29584., 24106., 25960., 27814., 29668., 24172., 26032., 27892.,
      29752., 24238., 26104., 27970., 29836., 24304., 26176., 28048., 29920.,
      24370., 26248., 28126., 30004., 24436., 26320., 28204., 30088., 24502.,
      26392., 28282., 30172., 24568., 26464., 28360., 30256., 24634., 26536.,
      28438., 30340., 24700., 26608., 28516., 30424., 24766., 26680., 28594.,
      30508., 24832., 26752., 28672., 30592., 13636., 14888., 16140., 17392.,
      13672., 14928., 16184., 17440., 13708., 14968., 16228., 17488., 13744.,
      15008., 16272., 17536., 13780., 15048., 16316., 17584., 13816., 15088.,
      16360., 17632., 13852., 15128., 16404., 17680., 13888., 15168., 16448.,
      17728.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4540.,  4960.,  5380.,  5800.,  4568.,  4992.,  5416.,  5840.,  4596.,
      5024.,  5452.,  5880.,  4624.,  5056.,  5488.,  5920.,  4652.,  5088.,
      5524.,  5960.,  4680.,  5120.,  5560.,  6000.,  4708.,  5152.,  5596.,
      6040.,  4736.,  5184.,  5632.,  6080.,  4764.,  5216.,  5668.,  6120.,
      4792.,  5248.,  5704.,  6160.,  4820.,  5280.,  5740.,  6200.,  4848.,
      5312.,  5776.,  6240.,  4876.,  5344.,  5812.,  6280.,  4904.,  5376.,
      5848.,  6320.,  4932.,  5408.,  5884.,  6360.,  4960.,  5440.,  5920.,
      6400.,  4988.,  5472.,  5956.,  6440.,  5016.,  5504.,  5992.,  6480.,
      5044.,  5536.,  6028.,  6520.,  5072.,  5568.,  6064.,  6560.,  5100.,
      5600.,  6100.,  6600.,  5128.,  5632.,  6136.,  6640.,  5156.,  5664.,
      6172.,  6680.,  5184.,  5696.,  6208.,  6720.,  5212.,  5728.,  6244.,
      6760.,  5240.,  5760.,  6280.,  6800.,  5268.,  5792.,  6316.,  6840.,
      5296.,  5824.,  6352.,  6880.,  5884.,  6496.,  7108.,  7720.,  5912.,
      6528.,  7144.,  7760.,  5940.,  6560.,  7180.,  7800.,  5968.,  6592.,
      7216.,  7840.,  5996.,  6624.,  7252.,  7880.,  6024.,  6656.,  7288.,
      7920.,  6052.,  6688.,  7324.,  7960.,  6080.,  6720.,  7360.,  8000.,
      6108.,  6752.,  7396.,  8040.,  6136.,  6784.,  7432.,  8080.,  6164.,
      6816.,  7468.,  8120.,  6192.,  6848.,  7504.,  8160.,  6220.,  6880.,
      7540.,  8200.,  6248.,  6912.,  7576.,  8240.,  6276.,  6944.,  7612.,
      8280.,  6304.,  6976.,  7648.,  8320.,  6332.,  7008.,  7684.,  8360.,
      6360.,  7040.,  7720.,  8400.,  6388.,  7072.,  7756.,  8440.,  6416.,
      7104.,  7792.,  8480.,  6444.,  7136.,  7828.,  8520.,  6472.,  7168.,
      7864.,  8560.,  6500.,  7200.,  7900.,  8600.,  6528.,  7232.,  7936.,
      8640.,  6556.,  7264.,  7972.,  8680.,  6584.,  7296.,  8008.,  8720.,
      6612.,  7328.,  8044.,  8760.,  6640.,  7360.,  8080.,  8800.,  7228.,
      8032.,  8836.,  9640.,  7256.,  8064.,  8872.,  9680.,  7284.,  8096.,
      8908.,  9720.,  7312.,  8128.,  8944.,  9760.,  7340.,  8160.,  8980.,
      9800.,  7368.,  8192.,  9016.,  9840.,  7396.,  8224.,  9052.,  9880.,
      7424.,  8256.,  9088.,  9920.,  7452.,  8288.,  9124.,  9960.,  7480.,
      8320.,  9160.,  10000., 7508.,  8352.,  9196.,  10040., 7536.,  8384.,
      9232.,  10080., 7564.,  8416.,  9268.,  10120., 7592.,  8448.,  9304.,
      10160., 7620.,  8480.,  9340.,  10200., 7648.,  8512.,  9376.,  10240.,
      7676.,  8544.,  9412.,  10280., 7704.,  8576.,  9448.,  10320., 7732.,
      8608.,  9484.,  10360., 7760.,  8640.,  9520.,  10400., 7788.,  8672.,
      9556.,  10440., 7816.,  8704.,  9592.,  10480., 7844.,  8736.,  9628.,
      10520., 7872.,  8768.,  9664.,  10560., 7900.,  8800.,  9700.,  10600.,
      7928.,  8832.,  9736.,  10640., 7956.,  8864.,  9772.,  10680., 7984.,
      8896.,  9808.,  10720., 8572.,  9568.,  10564., 11560., 8600.,  9600.,
      10600., 11600., 8628.,  9632.,  10636., 11640., 8656.,  9664.,  10672.,
      11680., 8684.,  9696.,  10708., 11720., 8712.,  9728.,  10744., 11760.,
      8740.,  9760.,  10780., 11800., 8768.,  9792.,  10816., 11840., 8796.,
      9824.,  10852., 11880., 8824.,  9856.,  10888., 11920., 8852.,  9888.,
      10924., 11960., 8880.,  9920.,  10960., 12000., 8908.,  9952.,  10996.,
      12040., 8936.,  9984.,  11032., 12080., 8964.,  10016., 11068., 12120.,
      8992.,  10048., 11104., 12160., 9020.,  10080., 11140., 12200., 9048.,
      10112., 11176., 12240., 9076.,  10144., 11212., 12280., 9104.,  10176.,
      11248., 12320., 9132.,  10208., 11284., 12360., 9160.,  10240., 11320.,
      12400., 9188.,  10272., 11356., 12440., 9216.,  10304., 11392., 12480.,
      9244.,  10336., 11428., 12520., 9272.,  10368., 11464., 12560., 9300.,
      10400., 11500., 12600., 9328.,  10432., 11536., 12640., 9916.,  11104.,
      12292., 13480., 9944.,  11136., 12328., 13520., 9972.,  11168., 12364.,
      13560., 10000., 11200., 12400., 13600., 10028., 11232., 12436., 13640.,
      10056., 11264., 12472., 13680., 10084., 11296., 12508., 13720., 10112.,
      11328., 12544., 13760., 10140., 11360., 12580., 13800., 10168., 11392.,
      12616., 13840., 10196., 11424., 12652., 13880., 10224., 11456., 12688.,
      13920., 10252., 11488., 12724., 13960., 10280., 11520., 12760., 14000.,
      10308., 11552., 12796., 14040., 10336., 11584., 12832., 14080., 10364.,
      11616., 12868., 14120., 10392., 11648., 12904., 14160., 10420., 11680.,
      12940., 14200., 10448., 11712., 12976., 14240., 10476., 11744., 13012.,
      14280., 10504., 11776., 13048., 14320., 10532., 11808., 13084., 14360.,
      10560., 11840., 13120., 14400., 10588., 11872., 13156., 14440., 10616.,
      11904., 13192., 14480., 10644., 11936., 13228., 14520., 10672., 11968.,
      13264., 14560., 11260., 12640., 14020., 15400., 11288., 12672., 14056.,
      15440., 11316., 12704., 14092., 15480., 11344., 12736., 14128., 15520.,
      11372., 12768., 14164., 15560., 11400., 12800., 14200., 15600., 11428.,
      12832., 14236., 15640., 11456., 12864., 14272., 15680., 11484., 12896.,
      14308., 15720., 11512., 12928., 14344., 15760., 11540., 12960., 14380.,
      15800., 11568., 12992., 14416., 15840., 11596., 13024., 14452., 15880.,
      11624., 13056., 14488., 15920., 11652., 13088., 14524., 15960., 11680.,
      13120., 14560., 16000., 11708., 13152., 14596., 16040., 11736., 13184.,
      14632., 16080., 11764., 13216., 14668., 16120., 11792., 13248., 14704.,
      16160., 11820., 13280., 14740., 16200., 11848., 13312., 14776., 16240.,
      11876., 13344., 14812., 16280., 11904., 13376., 14848., 16320., 11932.,
      13408., 14884., 16360., 11960., 13440., 14920., 16400., 11988., 13472.,
      14956., 16440., 12016., 13504., 14992., 16480., 12604., 14176., 15748.,
      17320., 12632., 14208., 15784., 17360., 12660., 14240., 15820., 17400.,
      12688., 14272., 15856., 17440., 12716., 14304., 15892., 17480., 12744.,
      14336., 15928., 17520., 12772., 14368., 15964., 17560., 12800., 14400.,
      16000., 17600., 12828., 14432., 16036., 17640., 12856., 14464., 16072.,
      17680., 12884., 14496., 16108., 17720., 12912., 14528., 16144., 17760.,
      12940., 14560., 16180., 17800., 12968., 14592., 16216., 17840., 12996.,
      14624., 16252., 17880., 13024., 14656., 16288., 17920., 13052., 14688.,
      16324., 17960., 13080., 14720., 16360., 18000., 13108., 14752., 16396.,
      18040., 13136., 14784., 16432., 18080., 13164., 14816., 16468., 18120.,
      13192., 14848., 16504., 18160., 13220., 14880., 16540., 18200., 13248.,
      14912., 16576., 18240., 13276., 14944., 16612., 18280., 13304., 14976.,
      16648., 18320., 13332., 15008., 16684., 18360., 13360., 15040., 16720.,
      18400.};
  const std::array<int, 4> in_shape = {{1, 11, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3754., 3808., 4772., 4840., 3376., 3424., 3472., 4510., 4564., 5724.,
      5792., 4048., 4096., 4144., 5337., 5400., 6766., 6844., 4770., 4824.,
      4878., 6219., 6282., 7858., 7936., 5526., 5580., 5634., 7101., 7164.,
      8950., 9028., 6282., 6336., 6390., 2662., 2692., 3260., 3296., 2200.,
      2224., 2248., 3082., 3112., 3764., 3800., 2536., 2560., 2584.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      426.,  436.,  446.,  456.,  466.,  476.,  486.,  566.,  576.,  586.,
      596.,  606.,  616.,  626.,  706.,  716.,  726.,  736.,  746.,  756.,
      766.,  846.,  856.,  866.,  876.,  886.,  896.,  906.,  986.,  996.,
      1006., 1016., 1026., 1036., 1046., 1126., 1136., 1146., 1156., 1166.,
      1176., 1186., 1266., 1276., 1286., 1296., 1306., 1316., 1326.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7130.,  7508.,  7232.,  7616.,  9040.,  9544.,  9168.,  9680.,  6374.,
      6752.,  6464.,  6848.,  6554.,  6944.,  8558.,  9020.,  8660.,  9128.,
      10832., 11448., 10960., 11584., 7634.,  8096.,  7724.,  8192.,  7814.,
      8288.,  10107., 10674., 10224., 10800., 12776., 13532., 12920., 13688.,
      8973.,  9540.,  9072.,  9648.,  9171.,  9756.,  11745., 12438., 11862.,
      12564., 14792., 15716., 14936., 15872., 10359., 11052., 10458., 11160.,
      10557., 11268., 13383., 14202., 13500., 14328., 16808., 17900., 16952.,
      18056., 11745., 12564., 11844., 12672., 11943., 12780., 4862.,  5324.,
      4916.,  5384.,  5904.,  6520.,  5968.,  6592.,  3938.,  4400.,  3980.,
      4448.,  4022.,  4496.,  5618.,  6164.,  5672.,  6224.,  6800.,  7528.,
      6864.,  7600.,  4526.,  5072.,  4568.,  5120.,  4610.,  5168.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      728.,  852.,  744.,  872.,  760.,  892.,  776.,  912.,  792.,  932.,
      808.,  952.,  824.,  972.,  952.,  1132., 968.,  1152., 984.,  1172.,
      1000., 1192., 1016., 1212., 1032., 1232., 1048., 1252., 1176., 1412.,
      1192., 1432., 1208., 1452., 1224., 1472., 1240., 1492., 1256., 1512.,
      1272., 1532., 1400., 1692., 1416., 1712., 1432., 1732., 1448., 1752.,
      1464., 1772., 1480., 1792., 1496., 1812., 1624., 1972., 1640., 1992.,
      1656., 2012., 1672., 2032., 1688., 2052., 1704., 2072., 1720., 2092.,
      1848., 2252., 1864., 2272., 1880., 2292., 1896., 2312., 1912., 2332.,
      1928., 2352., 1944., 2372., 2072., 2532., 2088., 2552., 2104., 2572.,
      2120., 2592., 2136., 2612., 2152., 2632., 2168., 2652.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13882., 14260., 14638., 15016., 14080., 14464., 14848., 15232., 17576.,
      18080., 18584., 19088., 17824., 18336., 18848., 19360., 12370., 12748.,
      13126., 13504., 12544., 12928., 13312., 13696., 12718., 13108., 13498.,
      13888., 16654., 17116., 17578., 18040., 16852., 17320., 17788., 18256.,
      21048., 21664., 22280., 22896., 21296., 21920., 22544., 23168., 14806.,
      15268., 15730., 16192., 14980., 15448., 15916., 16384., 15154., 15628.,
      16102., 16576., 19647., 20214., 20781., 21348., 19872., 20448., 21024.,
      21600., 24796., 25552., 26308., 27064., 25072., 25840., 26608., 27376.,
      17379., 17946., 18513., 19080., 17568., 18144., 18720., 19296., 17757.,
      18342., 18927., 19512., 22797., 23490., 24183., 24876., 23022., 23724.,
      24426., 25128., 28660., 29584., 30508., 31432., 28936., 29872., 30808.,
      31744., 20025., 20718., 21411., 22104., 20214., 20916., 21618., 22320.,
      20403., 21114., 21825., 22536., 25947., 26766., 27585., 28404., 26172.,
      27000., 27828., 28656., 32524., 33616., 34708., 35800., 32800., 33904.,
      35008., 36112., 22671., 23490., 24309., 25128., 22860., 23688., 24516.,
      25344., 23049., 23886., 24723., 25560., 9262.,  9724.,  10186., 10648.,
      9364.,  9832.,  10300., 10768., 11192., 11808., 12424., 13040., 11312.,
      11936., 12560., 13184., 7414.,  7876.,  8338.,  8800.,  7492.,  7960.,
      8428.,  8896.,  7570.,  8044.,  8518.,  8992.,  10690., 11236., 11782.,
      12328., 10792., 11344., 11896., 12448., 12872., 13600., 14328., 15056.,
      12992., 13728., 14464., 15200., 8506.,  9052.,  9598.,  10144., 8584.,
      9136.,  9688.,  10240., 8662.,  9220.,  9778.,  10336.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1332., 1456., 1580., 1704., 1360., 1488., 1616., 1744., 1388., 1520.,
      1652., 1784., 1416., 1552., 1688., 1824., 1444., 1584., 1724., 1864.,
      1472., 1616., 1760., 1904., 1500., 1648., 1796., 1944., 1724., 1904.,
      2084., 2264., 1752., 1936., 2120., 2304., 1780., 1968., 2156., 2344.,
      1808., 2000., 2192., 2384., 1836., 2032., 2228., 2424., 1864., 2064.,
      2264., 2464., 1892., 2096., 2300., 2504., 2116., 2352., 2588., 2824.,
      2144., 2384., 2624., 2864., 2172., 2416., 2660., 2904., 2200., 2448.,
      2696., 2944., 2228., 2480., 2732., 2984., 2256., 2512., 2768., 3024.,
      2284., 2544., 2804., 3064., 2508., 2800., 3092., 3384., 2536., 2832.,
      3128., 3424., 2564., 2864., 3164., 3464., 2592., 2896., 3200., 3504.,
      2620., 2928., 3236., 3544., 2648., 2960., 3272., 3584., 2676., 2992.,
      3308., 3624., 2900., 3248., 3596., 3944., 2928., 3280., 3632., 3984.,
      2956., 3312., 3668., 4024., 2984., 3344., 3704., 4064., 3012., 3376.,
      3740., 4104., 3040., 3408., 3776., 4144., 3068., 3440., 3812., 4184.,
      3292., 3696., 4100., 4504., 3320., 3728., 4136., 4544., 3348., 3760.,
      4172., 4584., 3376., 3792., 4208., 4624., 3404., 3824., 4244., 4664.,
      3432., 3856., 4280., 4704., 3460., 3888., 4316., 4744., 3684., 4144.,
      4604., 5064., 3712., 4176., 4640., 5104., 3740., 4208., 4676., 5144.,
      3768., 4240., 4712., 5184., 3796., 4272., 4748., 5224., 3824., 4304.,
      4784., 5264., 3852., 4336., 4820., 5304.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7454.,  7508.,  7562.,  7616.,  9476.,  9544.,  9612.,  9680.,  6704.,
      6752.,  6800.,  6848.,  6896.,  6944.,  8966.,  9020.,  9074.,  9128.,
      11380., 11448., 11516., 11584., 8048.,  8096.,  8144.,  8192.,  8240.,
      8288.,  10611., 10674., 10737., 10800., 13454., 13532., 13610., 13688.,
      9486.,  9540.,  9594.,  9648.,  9702.,  9756.,  12375., 12438., 12501.,
      12564., 15638., 15716., 15794., 15872., 10998., 11052., 11106., 11160.,
      11214., 11268., 14139., 14202., 14265., 14328., 17822., 17900., 17978.,
      18056., 12510., 12564., 12618., 12672., 12726., 12780., 5294.,  5324.,
      5354.,  5384.,  6484.,  6520.,  6556.,  6592.,  4376.,  4400.,  4424.,
      4448.,  4472.,  4496.,  6134.,  6164.,  6194.,  6224.,  7492.,  7528.,
      7564.,  7600.,  5048.,  5072.,  5096.,  5120.,  5144.,  5168.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      842.,  852.,  862.,  872.,  882.,  892.,  902.,  912.,  922.,  932.,
      942.,  952.,  962.,  972.,  1122., 1132., 1142., 1152., 1162., 1172.,
      1182., 1192., 1202., 1212., 1222., 1232., 1242., 1252., 1402., 1412.,
      1422., 1432., 1442., 1452., 1462., 1472., 1482., 1492., 1502., 1512.,
      1522., 1532., 1682., 1692., 1702., 1712., 1722., 1732., 1742., 1752.,
      1762., 1772., 1782., 1792., 1802., 1812., 1962., 1972., 1982., 1992.,
      2002., 2012., 2022., 2032., 2042., 2052., 2062., 2072., 2082., 2092.,
      2242., 2252., 2262., 2272., 2282., 2292., 2302., 2312., 2322., 2332.,
      2342., 2352., 2362., 2372., 2522., 2532., 2542., 2552., 2562., 2572.,
      2582., 2592., 2602., 2612., 2622., 2632., 2642., 2652.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14158., 14908., 14260., 15016., 14362., 15124., 14464., 15232., 17952.,
      18952., 18080., 19088., 18208., 19224., 18336., 19360., 12658., 13408.,
      12748., 13504., 12838., 13600., 12928., 13696., 13018., 13792., 13108.,
      13888., 17014., 17932., 17116., 18040., 17218., 18148., 17320., 18256.,
      21536., 22760., 21664., 22896., 21792., 23032., 21920., 23168., 15178.,
      16096., 15268., 16192., 15358., 16288., 15448., 16384., 15538., 16480.,
      15628., 16576., 20097., 21222., 20214., 21348., 20331., 21474., 20448.,
      21600., 25408., 26908., 25552., 27064., 25696., 27220., 25840., 27376.,
      17847., 18972., 17946., 19080., 18045., 19188., 18144., 19296., 18243.,
      19404., 18342., 19512., 23373., 24750., 23490., 24876., 23607., 25002.,
      23724., 25128., 29440., 31276., 29584., 31432., 29728., 31588., 29872.,
      31744., 20619., 21996., 20718., 22104., 20817., 22212., 20916., 22320.,
      21015., 22428., 21114., 22536., 26649., 28278., 26766., 28404., 26883.,
      28530., 27000., 28656., 33472., 35644., 33616., 35800., 33760., 35956.,
      33904., 36112., 23391., 25020., 23490., 25128., 23589., 25236., 23688.,
      25344., 23787., 25452., 23886., 25560., 9670.,  10588., 9724.,  10648.,
      9778.,  10708., 9832.,  10768., 11744., 12968., 11808., 13040., 11872.,
      13112., 11936., 13184., 7834.,  8752.,  7876.,  8800.,  7918.,  8848.,
      7960.,  8896.,  8002.,  8944.,  8044.,  8992.,  11182., 12268., 11236.,
      12328., 11290., 12388., 11344., 12448., 13536., 14984., 13600., 15056.,
      13664., 15128., 13728., 15200., 9010.,  10096., 9052.,  10144., 9094.,
      10192., 9136.,  10240., 9178.,  10288., 9220.,  10336.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1440., 1684., 1456., 1704., 1472., 1724., 1488., 1744., 1504., 1764.,
      1520., 1784., 1536., 1804., 1552., 1824., 1568., 1844., 1584., 1864.,
      1600., 1884., 1616., 1904., 1632., 1924., 1648., 1944., 1888., 2244.,
      1904., 2264., 1920., 2284., 1936., 2304., 1952., 2324., 1968., 2344.,
      1984., 2364., 2000., 2384., 2016., 2404., 2032., 2424., 2048., 2444.,
      2064., 2464., 2080., 2484., 2096., 2504., 2336., 2804., 2352., 2824.,
      2368., 2844., 2384., 2864., 2400., 2884., 2416., 2904., 2432., 2924.,
      2448., 2944., 2464., 2964., 2480., 2984., 2496., 3004., 2512., 3024.,
      2528., 3044., 2544., 3064., 2784., 3364., 2800., 3384., 2816., 3404.,
      2832., 3424., 2848., 3444., 2864., 3464., 2880., 3484., 2896., 3504.,
      2912., 3524., 2928., 3544., 2944., 3564., 2960., 3584., 2976., 3604.,
      2992., 3624., 3232., 3924., 3248., 3944., 3264., 3964., 3280., 3984.,
      3296., 4004., 3312., 4024., 3328., 4044., 3344., 4064., 3360., 4084.,
      3376., 4104., 3392., 4124., 3408., 4144., 3424., 4164., 3440., 4184.,
      3680., 4484., 3696., 4504., 3712., 4524., 3728., 4544., 3744., 4564.,
      3760., 4584., 3776., 4604., 3792., 4624., 3808., 4644., 3824., 4664.,
      3840., 4684., 3856., 4704., 3872., 4724., 3888., 4744., 4128., 5044.,
      4144., 5064., 4160., 5084., 4176., 5104., 4192., 5124., 4208., 5144.,
      4224., 5164., 4240., 5184., 4256., 5204., 4272., 5224., 4288., 5244.,
      4304., 5264., 4320., 5284., 4336., 5304.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      27566., 28316., 29066., 29816., 27764., 28520., 29276., 30032., 27962.,
      28724., 29486., 30248., 28160., 28928., 29696., 30464., 34904., 35904.,
      36904., 37904., 35152., 36160., 37168., 38176., 35400., 36416., 37432.,
      38448., 35648., 36672., 37696., 38720., 24566., 25316., 26066., 26816.,
      24740., 25496., 26252., 27008., 24914., 25676., 26438., 27200., 25088.,
      25856., 26624., 27392., 25262., 26036., 26810., 27584., 25436., 26216.,
      26996., 27776., 33110., 34028., 34946., 35864., 33308., 34232., 35156.,
      36080., 33506., 34436., 35366., 36296., 33704., 34640., 35576., 36512.,
      41848., 43072., 44296., 45520., 42096., 43328., 44560., 45792., 42344.,
      43584., 44824., 46064., 42592., 43840., 45088., 46336., 29438., 30356.,
      31274., 32192., 29612., 30536., 31460., 32384., 29786., 30716., 31646.,
      32576., 29960., 30896., 31832., 32768., 30134., 31076., 32018., 32960.,
      30308., 31256., 32204., 33152., 39069., 40194., 41319., 42444., 39294.,
      40428., 41562., 42696., 39519., 40662., 41805., 42948., 39744., 40896.,
      42048., 43200., 49316., 50816., 52316., 53816., 49592., 51104., 52616.,
      54128., 49868., 51392., 52916., 54440., 50144., 51680., 53216., 54752.,
      34569., 35694., 36819., 37944., 34758., 35892., 37026., 38160., 34947.,
      36090., 37233., 38376., 35136., 36288., 37440., 38592., 35325., 36486.,
      37647., 38808., 35514., 36684., 37854., 39024., 45369., 46746., 48123.,
      49500., 45594., 46980., 48366., 49752., 45819., 47214., 48609., 50004.,
      46044., 47448., 48852., 50256., 57044., 58880., 60716., 62552., 57320.,
      59168., 61016., 62864., 57596., 59456., 61316., 63176., 57872., 59744.,
      61616., 63488., 39861., 41238., 42615., 43992., 40050., 41436., 42822.,
      44208., 40239., 41634., 43029., 44424., 40428., 41832., 43236., 44640.,
      40617., 42030., 43443., 44856., 40806., 42228., 43650., 45072., 51669.,
      53298., 54927., 56556., 51894., 53532., 55170., 56808., 52119., 53766.,
      55413., 57060., 52344., 54000., 55656., 57312., 64772., 66944., 69116.,
      71288., 65048., 67232., 69416., 71600., 65324., 67520., 69716., 71912.,
      65600., 67808., 70016., 72224., 45153., 46782., 48411., 50040., 45342.,
      46980., 48618., 50256., 45531., 47178., 48825., 50472., 45720., 47376.,
      49032., 50688., 45909., 47574., 49239., 50904., 46098., 47772., 49446.,
      51120., 18422., 19340., 20258., 21176., 18524., 19448., 20372., 21296.,
      18626., 19556., 20486., 21416., 18728., 19664., 20600., 21536., 22264.,
      23488., 24712., 25936., 22384., 23616., 24848., 26080., 22504., 23744.,
      24984., 26224., 22624., 23872., 25120., 26368., 14750., 15668., 16586.,
      17504., 14828., 15752., 16676., 17600., 14906., 15836., 16766., 17696.,
      14984., 15920., 16856., 17792., 15062., 16004., 16946., 17888., 15140.,
      16088., 17036., 17984., 21278., 22364., 23450., 24536., 21380., 22472.,
      23564., 24656., 21482., 22580., 23678., 24776., 21584., 22688., 23792.,
      24896., 25624., 27072., 28520., 29968., 25744., 27200., 28656., 30112.,
      25864., 27328., 28792., 30256., 25984., 27456., 28928., 30400., 16934.,
      18020., 19106., 20192., 17012., 18104., 19196., 20288., 17090., 18188.,
      19286., 20384., 17168., 18272., 19376., 20480., 17246., 18356., 19466.,
      20576., 17324., 18440., 19556., 20672.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2636., 2880.,  3124., 3368.,  2664., 2912.,  3160., 3408.,  2692., 2944.,
      3196., 3448.,  2720., 2976.,  3232., 3488.,  2748., 3008.,  3268., 3528.,
      2776., 3040.,  3304., 3568.,  2804., 3072.,  3340., 3608.,  2832., 3104.,
      3376., 3648.,  2860., 3136.,  3412., 3688.,  2888., 3168.,  3448., 3728.,
      2916., 3200.,  3484., 3768.,  2944., 3232.,  3520., 3808.,  2972., 3264.,
      3556., 3848.,  3000., 3296.,  3592., 3888.,  3420., 3776.,  4132., 4488.,
      3448., 3808.,  4168., 4528.,  3476., 3840.,  4204., 4568.,  3504., 3872.,
      4240., 4608.,  3532., 3904.,  4276., 4648.,  3560., 3936.,  4312., 4688.,
      3588., 3968.,  4348., 4728.,  3616., 4000.,  4384., 4768.,  3644., 4032.,
      4420., 4808.,  3672., 4064.,  4456., 4848.,  3700., 4096.,  4492., 4888.,
      3728., 4128.,  4528., 4928.,  3756., 4160.,  4564., 4968.,  3784., 4192.,
      4600., 5008.,  4204., 4672.,  5140., 5608.,  4232., 4704.,  5176., 5648.,
      4260., 4736.,  5212., 5688.,  4288., 4768.,  5248., 5728.,  4316., 4800.,
      5284., 5768.,  4344., 4832.,  5320., 5808.,  4372., 4864.,  5356., 5848.,
      4400., 4896.,  5392., 5888.,  4428., 4928.,  5428., 5928.,  4456., 4960.,
      5464., 5968.,  4484., 4992.,  5500., 6008.,  4512., 5024.,  5536., 6048.,
      4540., 5056.,  5572., 6088.,  4568., 5088.,  5608., 6128.,  4988., 5568.,
      6148., 6728.,  5016., 5600.,  6184., 6768.,  5044., 5632.,  6220., 6808.,
      5072., 5664.,  6256., 6848.,  5100., 5696.,  6292., 6888.,  5128., 5728.,
      6328., 6928.,  5156., 5760.,  6364., 6968.,  5184., 5792.,  6400., 7008.,
      5212., 5824.,  6436., 7048.,  5240., 5856.,  6472., 7088.,  5268., 5888.,
      6508., 7128.,  5296., 5920.,  6544., 7168.,  5324., 5952.,  6580., 7208.,
      5352., 5984.,  6616., 7248.,  5772., 6464.,  7156., 7848.,  5800., 6496.,
      7192., 7888.,  5828., 6528.,  7228., 7928.,  5856., 6560.,  7264., 7968.,
      5884., 6592.,  7300., 8008.,  5912., 6624.,  7336., 8048.,  5940., 6656.,
      7372., 8088.,  5968., 6688.,  7408., 8128.,  5996., 6720.,  7444., 8168.,
      6024., 6752.,  7480., 8208.,  6052., 6784.,  7516., 8248.,  6080., 6816.,
      7552., 8288.,  6108., 6848.,  7588., 8328.,  6136., 6880.,  7624., 8368.,
      6556., 7360.,  8164., 8968.,  6584., 7392.,  8200., 9008.,  6612., 7424.,
      8236., 9048.,  6640., 7456.,  8272., 9088.,  6668., 7488.,  8308., 9128.,
      6696., 7520.,  8344., 9168.,  6724., 7552.,  8380., 9208.,  6752., 7584.,
      8416., 9248.,  6780., 7616.,  8452., 9288.,  6808., 7648.,  8488., 9328.,
      6836., 7680.,  8524., 9368.,  6864., 7712.,  8560., 9408.,  6892., 7744.,
      8596., 9448.,  6920., 7776.,  8632., 9488.,  7340., 8256.,  9172., 10088.,
      7368., 8288.,  9208., 10128., 7396., 8320.,  9244., 10168., 7424., 8352.,
      9280., 10208., 7452., 8384.,  9316., 10248., 7480., 8416.,  9352., 10288.,
      7508., 8448.,  9388., 10328., 7536., 8480.,  9424., 10368., 7564., 8512.,
      9460., 10408., 7592., 8544.,  9496., 10448., 7620., 8576.,  9532., 10488.,
      7648., 8608.,  9568., 10528., 7676., 8640.,  9604., 10568., 7704., 8672.,
      9640., 10608.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14854., 14908., 14962., 15016., 15070., 15124., 15178., 15232., 18884.,
      18952., 19020., 19088., 19156., 19224., 19292., 19360., 13360., 13408.,
      13456., 13504., 13552., 13600., 13648., 13696., 13744., 13792., 13840.,
      13888., 17878., 17932., 17986., 18040., 18094., 18148., 18202., 18256.,
      22692., 22760., 22828., 22896., 22964., 23032., 23100., 23168., 16048.,
      16096., 16144., 16192., 16240., 16288., 16336., 16384., 16432., 16480.,
      16528., 16576., 21159., 21222., 21285., 21348., 21411., 21474., 21537.,
      21600., 26830., 26908., 26986., 27064., 27142., 27220., 27298., 27376.,
      18918., 18972., 19026., 19080., 19134., 19188., 19242., 19296., 19350.,
      19404., 19458., 19512., 24687., 24750., 24813., 24876., 24939., 25002.,
      25065., 25128., 31198., 31276., 31354., 31432., 31510., 31588., 31666.,
      31744., 21942., 21996., 22050., 22104., 22158., 22212., 22266., 22320.,
      22374., 22428., 22482., 22536., 28215., 28278., 28341., 28404., 28467.,
      28530., 28593., 28656., 35566., 35644., 35722., 35800., 35878., 35956.,
      36034., 36112., 24966., 25020., 25074., 25128., 25182., 25236., 25290.,
      25344., 25398., 25452., 25506., 25560., 10558., 10588., 10618., 10648.,
      10678., 10708., 10738., 10768., 12932., 12968., 13004., 13040., 13076.,
      13112., 13148., 13184., 8728.,  8752.,  8776.,  8800.,  8824.,  8848.,
      8872.,  8896.,  8920.,  8944.,  8968.,  8992.,  12238., 12268., 12298.,
      12328., 12358., 12388., 12418., 12448., 14948., 14984., 15020., 15056.,
      15092., 15128., 15164., 15200., 10072., 10096., 10120., 10144., 10168.,
      10192., 10216., 10240., 10264., 10288., 10312., 10336.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1674., 1684., 1694., 1704., 1714., 1724., 1734., 1744., 1754., 1764.,
      1774., 1784., 1794., 1804., 1814., 1824., 1834., 1844., 1854., 1864.,
      1874., 1884., 1894., 1904., 1914., 1924., 1934., 1944., 2234., 2244.,
      2254., 2264., 2274., 2284., 2294., 2304., 2314., 2324., 2334., 2344.,
      2354., 2364., 2374., 2384., 2394., 2404., 2414., 2424., 2434., 2444.,
      2454., 2464., 2474., 2484., 2494., 2504., 2794., 2804., 2814., 2824.,
      2834., 2844., 2854., 2864., 2874., 2884., 2894., 2904., 2914., 2924.,
      2934., 2944., 2954., 2964., 2974., 2984., 2994., 3004., 3014., 3024.,
      3034., 3044., 3054., 3064., 3354., 3364., 3374., 3384., 3394., 3404.,
      3414., 3424., 3434., 3444., 3454., 3464., 3474., 3484., 3494., 3504.,
      3514., 3524., 3534., 3544., 3554., 3564., 3574., 3584., 3594., 3604.,
      3614., 3624., 3914., 3924., 3934., 3944., 3954., 3964., 3974., 3984.,
      3994., 4004., 4014., 4024., 4034., 4044., 4054., 4064., 4074., 4084.,
      4094., 4104., 4114., 4124., 4134., 4144., 4154., 4164., 4174., 4184.,
      4474., 4484., 4494., 4504., 4514., 4524., 4534., 4544., 4554., 4564.,
      4574., 4584., 4594., 4604., 4614., 4624., 4634., 4644., 4654., 4664.,
      4674., 4684., 4694., 4704., 4714., 4724., 4734., 4744., 5034., 5044.,
      5054., 5064., 5074., 5084., 5094., 5104., 5114., 5124., 5134., 5144.,
      5154., 5164., 5174., 5184., 5194., 5204., 5214., 5224., 5234., 5244.,
      5254., 5264., 5274., 5284., 5294., 5304.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28214., 29708., 28316., 29816., 28418., 29924., 28520., 30032., 28622.,
      30140., 28724., 30248., 28826., 30356., 28928., 30464., 35776., 37768.,
      35904., 37904., 36032., 38040., 36160., 38176., 36288., 38312., 36416.,
      38448., 36544., 38584., 36672., 38720., 25226., 26720., 25316., 26816.,
      25406., 26912., 25496., 27008., 25586., 27104., 25676., 27200., 25766.,
      27296., 25856., 27392., 25946., 27488., 26036., 27584., 26126., 27680.,
      26216., 27776., 33926., 35756., 34028., 35864., 34130., 35972., 34232.,
      36080., 34334., 36188., 34436., 36296., 34538., 36404., 34640., 36512.,
      42944., 45384., 43072., 45520., 43200., 45656., 43328., 45792., 43456.,
      45928., 43584., 46064., 43712., 46200., 43840., 46336., 30266., 32096.,
      30356., 32192., 30446., 32288., 30536., 32384., 30626., 32480., 30716.,
      32576., 30806., 32672., 30896., 32768., 30986., 32864., 31076., 32960.,
      31166., 33056., 31256., 33152., 40077., 42318., 40194., 42444., 40311.,
      42570., 40428., 42696., 40545., 42822., 40662., 42948., 40779., 43074.,
      40896., 43200., 50672., 53660., 50816., 53816., 50960., 53972., 51104.,
      54128., 51248., 54284., 51392., 54440., 51536., 54596., 51680., 54752.,
      35595., 37836., 35694., 37944., 35793., 38052., 35892., 38160., 35991.,
      38268., 36090., 38376., 36189., 38484., 36288., 38592., 36387., 38700.,
      36486., 38808., 36585., 38916., 36684., 39024., 46629., 49374., 46746.,
      49500., 46863., 49626., 46980., 49752., 47097., 49878., 47214., 50004.,
      47331., 50130., 47448., 50256., 58736., 62396., 58880., 62552., 59024.,
      62708., 59168., 62864., 59312., 63020., 59456., 63176., 59600., 63332.,
      59744., 63488., 41139., 43884., 41238., 43992., 41337., 44100., 41436.,
      44208., 41535., 44316., 41634., 44424., 41733., 44532., 41832., 44640.,
      41931., 44748., 42030., 44856., 42129., 44964., 42228., 45072., 53181.,
      56430., 53298., 56556., 53415., 56682., 53532., 56808., 53649., 56934.,
      53766., 57060., 53883., 57186., 54000., 57312., 66800., 71132., 66944.,
      71288., 67088., 71444., 67232., 71600., 67376., 71756., 67520., 71912.,
      67664., 72068., 67808., 72224., 46683., 49932., 46782., 50040., 46881.,
      50148., 46980., 50256., 47079., 50364., 47178., 50472., 47277., 50580.,
      47376., 50688., 47475., 50796., 47574., 50904., 47673., 51012., 47772.,
      51120., 19286., 21116., 19340., 21176., 19394., 21236., 19448., 21296.,
      19502., 21356., 19556., 21416., 19610., 21476., 19664., 21536., 23424.,
      25864., 23488., 25936., 23552., 26008., 23616., 26080., 23680., 26152.,
      23744., 26224., 23808., 26296., 23872., 26368., 15626., 17456., 15668.,
      17504., 15710., 17552., 15752., 17600., 15794., 17648., 15836., 17696.,
      15878., 17744., 15920., 17792., 15962., 17840., 16004., 17888., 16046.,
      17936., 16088., 17984., 22310., 24476., 22364., 24536., 22418., 24596.,
      22472., 24656., 22526., 24716., 22580., 24776., 22634., 24836., 22688.,
      24896., 27008., 29896., 27072., 29968., 27136., 30040., 27200., 30112.,
      27264., 30184., 27328., 30256., 27392., 30328., 27456., 30400., 17978.,
      20144., 18020., 20192., 18062., 20240., 18104., 20288., 18146., 20336.,
      18188., 20384., 18230., 20432., 18272., 20480., 18314., 20528., 18356.,
      20576., 18398., 20624., 18440., 20672.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2864., 3348.,  2880., 3368.,  2896., 3388.,  2912., 3408.,  2928., 3428.,
      2944., 3448.,  2960., 3468.,  2976., 3488.,  2992., 3508.,  3008., 3528.,
      3024., 3548.,  3040., 3568.,  3056., 3588.,  3072., 3608.,  3088., 3628.,
      3104., 3648.,  3120., 3668.,  3136., 3688.,  3152., 3708.,  3168., 3728.,
      3184., 3748.,  3200., 3768.,  3216., 3788.,  3232., 3808.,  3248., 3828.,
      3264., 3848.,  3280., 3868.,  3296., 3888.,  3760., 4468.,  3776., 4488.,
      3792., 4508.,  3808., 4528.,  3824., 4548.,  3840., 4568.,  3856., 4588.,
      3872., 4608.,  3888., 4628.,  3904., 4648.,  3920., 4668.,  3936., 4688.,
      3952., 4708.,  3968., 4728.,  3984., 4748.,  4000., 4768.,  4016., 4788.,
      4032., 4808.,  4048., 4828.,  4064., 4848.,  4080., 4868.,  4096., 4888.,
      4112., 4908.,  4128., 4928.,  4144., 4948.,  4160., 4968.,  4176., 4988.,
      4192., 5008.,  4656., 5588.,  4672., 5608.,  4688., 5628.,  4704., 5648.,
      4720., 5668.,  4736., 5688.,  4752., 5708.,  4768., 5728.,  4784., 5748.,
      4800., 5768.,  4816., 5788.,  4832., 5808.,  4848., 5828.,  4864., 5848.,
      4880., 5868.,  4896., 5888.,  4912., 5908.,  4928., 5928.,  4944., 5948.,
      4960., 5968.,  4976., 5988.,  4992., 6008.,  5008., 6028.,  5024., 6048.,
      5040., 6068.,  5056., 6088.,  5072., 6108.,  5088., 6128.,  5552., 6708.,
      5568., 6728.,  5584., 6748.,  5600., 6768.,  5616., 6788.,  5632., 6808.,
      5648., 6828.,  5664., 6848.,  5680., 6868.,  5696., 6888.,  5712., 6908.,
      5728., 6928.,  5744., 6948.,  5760., 6968.,  5776., 6988.,  5792., 7008.,
      5808., 7028.,  5824., 7048.,  5840., 7068.,  5856., 7088.,  5872., 7108.,
      5888., 7128.,  5904., 7148.,  5920., 7168.,  5936., 7188.,  5952., 7208.,
      5968., 7228.,  5984., 7248.,  6448., 7828.,  6464., 7848.,  6480., 7868.,
      6496., 7888.,  6512., 7908.,  6528., 7928.,  6544., 7948.,  6560., 7968.,
      6576., 7988.,  6592., 8008.,  6608., 8028.,  6624., 8048.,  6640., 8068.,
      6656., 8088.,  6672., 8108.,  6688., 8128.,  6704., 8148.,  6720., 8168.,
      6736., 8188.,  6752., 8208.,  6768., 8228.,  6784., 8248.,  6800., 8268.,
      6816., 8288.,  6832., 8308.,  6848., 8328.,  6864., 8348.,  6880., 8368.,
      7344., 8948.,  7360., 8968.,  7376., 8988.,  7392., 9008.,  7408., 9028.,
      7424., 9048.,  7440., 9068.,  7456., 9088.,  7472., 9108.,  7488., 9128.,
      7504., 9148.,  7520., 9168.,  7536., 9188.,  7552., 9208.,  7568., 9228.,
      7584., 9248.,  7600., 9268.,  7616., 9288.,  7632., 9308.,  7648., 9328.,
      7664., 9348.,  7680., 9368.,  7696., 9388.,  7712., 9408.,  7728., 9428.,
      7744., 9448.,  7760., 9468.,  7776., 9488.,  8240., 10068., 8256., 10088.,
      8272., 10108., 8288., 10128., 8304., 10148., 8320., 10168., 8336., 10188.,
      8352., 10208., 8368., 10228., 8384., 10248., 8400., 10268., 8416., 10288.,
      8432., 10308., 8448., 10328., 8464., 10348., 8480., 10368., 8496., 10388.,
      8512., 10408., 8528., 10428., 8544., 10448., 8560., 10468., 8576., 10488.,
      8592., 10508., 8608., 10528., 8624., 10548., 8640., 10568., 8656., 10588.,
      8672., 10608.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x11x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      54934.,  56428.,  57922.,  59416.,  55132.,  56632.,  58132.,  59632.,
      55330.,  56836.,  58342.,  59848.,  55528.,  57040.,  58552.,  60064.,
      55726.,  57244.,  58762.,  60280.,  55924.,  57448.,  58972.,  60496.,
      56122.,  57652.,  59182.,  60712.,  56320.,  57856.,  59392.,  60928.,
      69560.,  71552.,  73544.,  75536.,  69808.,  71808.,  73808.,  75808.,
      70056.,  72064.,  74072.,  76080.,  70304.,  72320.,  74336.,  76352.,
      70552.,  72576.,  74600.,  76624.,  70800.,  72832.,  74864.,  76896.,
      71048.,  73088.,  75128.,  77168.,  71296.,  73344.,  75392.,  77440.,
      48958.,  50452.,  51946.,  53440.,  49132.,  50632.,  52132.,  53632.,
      49306.,  50812.,  52318.,  53824.,  49480.,  50992.,  52504.,  54016.,
      49654.,  51172.,  52690.,  54208.,  49828.,  51352.,  52876.,  54400.,
      50002.,  51532.,  53062.,  54592.,  50176.,  51712.,  53248.,  54784.,
      50350.,  51892.,  53434.,  54976.,  50524.,  52072.,  53620.,  55168.,
      50698.,  52252.,  53806.,  55360.,  50872.,  52432.,  53992.,  55552.,
      66022.,  67852.,  69682.,  71512.,  66220.,  68056.,  69892.,  71728.,
      66418.,  68260.,  70102.,  71944.,  66616.,  68464.,  70312.,  72160.,
      66814.,  68668.,  70522.,  72376.,  67012.,  68872.,  70732.,  72592.,
      67210.,  69076.,  70942.,  72808.,  67408.,  69280.,  71152.,  73024.,
      83448.,  85888.,  88328.,  90768.,  83696.,  86144.,  88592.,  91040.,
      83944.,  86400.,  88856.,  91312.,  84192.,  86656.,  89120.,  91584.,
      84440.,  86912.,  89384.,  91856.,  84688.,  87168.,  89648.,  92128.,
      84936.,  87424.,  89912.,  92400.,  85184.,  87680.,  90176.,  92672.,
      58702.,  60532.,  62362.,  64192.,  58876.,  60712.,  62548.,  64384.,
      59050.,  60892.,  62734.,  64576.,  59224.,  61072.,  62920.,  64768.,
      59398.,  61252.,  63106.,  64960.,  59572.,  61432.,  63292.,  65152.,
      59746.,  61612.,  63478.,  65344.,  59920.,  61792.,  63664.,  65536.,
      60094.,  61972.,  63850.,  65728.,  60268.,  62152.,  64036.,  65920.,
      60442.,  62332.,  64222.,  66112.,  60616.,  62512.,  64408.,  66304.,
      77913.,  80154.,  82395.,  84636.,  78138.,  80388.,  82638.,  84888.,
      78363.,  80622.,  82881.,  85140.,  78588.,  80856.,  83124.,  85392.,
      78813.,  81090.,  83367.,  85644.,  79038.,  81324.,  83610.,  85896.,
      79263.,  81558.,  83853.,  86148.,  79488.,  81792.,  84096.,  86400.,
      98356.,  101344., 104332., 107320., 98632.,  101632., 104632., 107632.,
      98908.,  101920., 104932., 107944., 99184.,  102208., 105232., 108256.,
      99460.,  102496., 105532., 108568., 99736.,  102784., 105832., 108880.,
      100012., 103072., 106132., 109192., 100288., 103360., 106432., 109504.,
      68949.,  71190.,  73431.,  75672.,  69138.,  71388.,  73638.,  75888.,
      69327.,  71586.,  73845.,  76104.,  69516.,  71784.,  74052.,  76320.,
      69705.,  71982.,  74259.,  76536.,  69894.,  72180.,  74466.,  76752.,
      70083.,  72378.,  74673.,  76968.,  70272.,  72576.,  74880.,  77184.,
      70461.,  72774.,  75087.,  77400.,  70650.,  72972.,  75294.,  77616.,
      70839.,  73170.,  75501.,  77832.,  71028.,  73368.,  75708.,  78048.,
      90513.,  93258.,  96003.,  98748.,  90738.,  93492.,  96246.,  99000.,
      90963.,  93726.,  96489.,  99252.,  91188.,  93960.,  96732.,  99504.,
      91413.,  94194.,  96975.,  99756.,  91638.,  94428.,  97218.,  100008.,
      91863.,  94662.,  97461.,  100260., 92088.,  94896.,  97704.,  100512.,
      113812., 117472., 121132., 124792., 114088., 117760., 121432., 125104.,
      114364., 118048., 121732., 125416., 114640., 118336., 122032., 125728.,
      114916., 118624., 122332., 126040., 115192., 118912., 122632., 126352.,
      115468., 119200., 122932., 126664., 115744., 119488., 123232., 126976.,
      79533.,  82278.,  85023.,  87768.,  79722.,  82476.,  85230.,  87984.,
      79911.,  82674.,  85437.,  88200.,  80100.,  82872.,  85644.,  88416.,
      80289.,  83070.,  85851.,  88632.,  80478.,  83268.,  86058.,  88848.,
      80667.,  83466.,  86265.,  89064.,  80856.,  83664.,  86472.,  89280.,
      81045.,  83862.,  86679.,  89496.,  81234.,  84060.,  86886.,  89712.,
      81423.,  84258.,  87093.,  89928.,  81612.,  84456.,  87300.,  90144.,
      103113., 106362., 109611., 112860., 103338., 106596., 109854., 113112.,
      103563., 106830., 110097., 113364., 103788., 107064., 110340., 113616.,
      104013., 107298., 110583., 113868., 104238., 107532., 110826., 114120.,
      104463., 107766., 111069., 114372., 104688., 108000., 111312., 114624.,
      129268., 133600., 137932., 142264., 129544., 133888., 138232., 142576.,
      129820., 134176., 138532., 142888., 130096., 134464., 138832., 143200.,
      130372., 134752., 139132., 143512., 130648., 135040., 139432., 143824.,
      130924., 135328., 139732., 144136., 131200., 135616., 140032., 144448.,
      90117.,  93366.,  96615.,  99864.,  90306.,  93564.,  96822.,  100080.,
      90495.,  93762.,  97029.,  100296., 90684.,  93960.,  97236.,  100512.,
      90873.,  94158.,  97443.,  100728., 91062.,  94356.,  97650.,  100944.,
      91251.,  94554.,  97857.,  101160., 91440.,  94752.,  98064.,  101376.,
      91629.,  94950.,  98271.,  101592., 91818.,  95148.,  98478.,  101808.,
      92007.,  95346.,  98685.,  102024., 92196.,  95544.,  98892.,  102240.,
      36742.,  38572.,  40402.,  42232.,  36844.,  38680.,  40516.,  42352.,
      36946.,  38788.,  40630.,  42472.,  37048.,  38896.,  40744.,  42592.,
      37150.,  39004.,  40858.,  42712.,  37252.,  39112.,  40972.,  42832.,
      37354.,  39220.,  41086.,  42952.,  37456.,  39328.,  41200.,  43072.,
      44408.,  46848.,  49288.,  51728.,  44528.,  46976.,  49424.,  51872.,
      44648.,  47104.,  49560.,  52016.,  44768.,  47232.,  49696.,  52160.,
      44888.,  47360.,  49832.,  52304.,  45008.,  47488.,  49968.,  52448.,
      45128.,  47616.,  50104.,  52592.,  45248.,  47744.,  50240.,  52736.,
      29422.,  31252.,  33082.,  34912.,  29500.,  31336.,  33172.,  35008.,
      29578.,  31420.,  33262.,  35104.,  29656.,  31504.,  33352.,  35200.,
      29734.,  31588.,  33442.,  35296.,  29812.,  31672.,  33532.,  35392.,
      29890.,  31756.,  33622.,  35488.,  29968.,  31840.,  33712.,  35584.,
      30046.,  31924.,  33802.,  35680.,  30124.,  32008.,  33892.,  35776.,
      30202.,  32092.,  33982.,  35872.,  30280.,  32176.,  34072.,  35968.,
      42454.,  44620.,  46786.,  48952.,  42556.,  44728.,  46900.,  49072.,
      42658.,  44836.,  47014.,  49192.,  42760.,  44944.,  47128.,  49312.,
      42862.,  45052.,  47242.,  49432.,  42964.,  45160.,  47356.,  49552.,
      43066.,  45268.,  47470.,  49672.,  43168.,  45376.,  47584.,  49792.,
      51128.,  54016.,  56904.,  59792.,  51248.,  54144.,  57040.,  59936.,
      51368.,  54272.,  57176.,  60080.,  51488.,  54400.,  57312.,  60224.,
      51608.,  54528.,  57448.,  60368.,  51728.,  54656.,  57584.,  60512.,
      51848.,  54784.,  57720.,  60656.,  51968.,  54912.,  57856.,  60800.,
      33790.,  35956.,  38122.,  40288.,  33868.,  36040.,  38212.,  40384.,
      33946.,  36124.,  38302.,  40480.,  34024.,  36208.,  38392.,  40576.,
      34102.,  36292.,  38482.,  40672.,  34180.,  36376.,  38572.,  40768.,
      34258.,  36460.,  38662.,  40864.,  34336.,  36544.,  38752.,  40960.,
      34414.,  36628.,  38842.,  41056.,  34492.,  36712.,  38932.,  41152.,
      34570.,  36796.,  39022.,  41248.,  34648.,  36880.,  39112.,  41344.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x11x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5244.,  5728.,  6212.,  6696.,  5272.,  5760.,  6248.,  6736.,  5300.,
      5792.,  6284.,  6776.,  5328.,  5824.,  6320.,  6816.,  5356.,  5856.,
      6356.,  6856.,  5384.,  5888.,  6392.,  6896.,  5412.,  5920.,  6428.,
      6936.,  5440.,  5952.,  6464.,  6976.,  5468.,  5984.,  6500.,  7016.,
      5496.,  6016.,  6536.,  7056.,  5524.,  6048.,  6572.,  7096.,  5552.,
      6080.,  6608.,  7136.,  5580.,  6112.,  6644.,  7176.,  5608.,  6144.,
      6680.,  7216.,  5636.,  6176.,  6716.,  7256.,  5664.,  6208.,  6752.,
      7296.,  5692.,  6240.,  6788.,  7336.,  5720.,  6272.,  6824.,  7376.,
      5748.,  6304.,  6860.,  7416.,  5776.,  6336.,  6896.,  7456.,  5804.,
      6368.,  6932.,  7496.,  5832.,  6400.,  6968.,  7536.,  5860.,  6432.,
      7004.,  7576.,  5888.,  6464.,  7040.,  7616.,  5916.,  6496.,  7076.,
      7656.,  5944.,  6528.,  7112.,  7696.,  5972.,  6560.,  7148.,  7736.,
      6000.,  6592.,  7184.,  7776.,  6812.,  7520.,  8228.,  8936.,  6840.,
      7552.,  8264.,  8976.,  6868.,  7584.,  8300.,  9016.,  6896.,  7616.,
      8336.,  9056.,  6924.,  7648.,  8372.,  9096.,  6952.,  7680.,  8408.,
      9136.,  6980.,  7712.,  8444.,  9176.,  7008.,  7744.,  8480.,  9216.,
      7036.,  7776.,  8516.,  9256.,  7064.,  7808.,  8552.,  9296.,  7092.,
      7840.,  8588.,  9336.,  7120.,  7872.,  8624.,  9376.,  7148.,  7904.,
      8660.,  9416.,  7176.,  7936.,  8696.,  9456.,  7204.,  7968.,  8732.,
      9496.,  7232.,  8000.,  8768.,  9536.,  7260.,  8032.,  8804.,  9576.,
      7288.,  8064.,  8840.,  9616.,  7316.,  8096.,  8876.,  9656.,  7344.,
      8128.,  8912.,  9696.,  7372.,  8160.,  8948.,  9736.,  7400.,  8192.,
      8984.,  9776.,  7428.,  8224.,  9020.,  9816.,  7456.,  8256.,  9056.,
      9856.,  7484.,  8288.,  9092.,  9896.,  7512.,  8320.,  9128.,  9936.,
      7540.,  8352.,  9164.,  9976.,  7568.,  8384.,  9200.,  10016., 8380.,
      9312.,  10244., 11176., 8408.,  9344.,  10280., 11216., 8436.,  9376.,
      10316., 11256., 8464.,  9408.,  10352., 11296., 8492.,  9440.,  10388.,
      11336., 8520.,  9472.,  10424., 11376., 8548.,  9504.,  10460., 11416.,
      8576.,  9536.,  10496., 11456., 8604.,  9568.,  10532., 11496., 8632.,
      9600.,  10568., 11536., 8660.,  9632.,  10604., 11576., 8688.,  9664.,
      10640., 11616., 8716.,  9696.,  10676., 11656., 8744.,  9728.,  10712.,
      11696., 8772.,  9760.,  10748., 11736., 8800.,  9792.,  10784., 11776.,
      8828.,  9824.,  10820., 11816., 8856.,  9856.,  10856., 11856., 8884.,
      9888.,  10892., 11896., 8912.,  9920.,  10928., 11936., 8940.,  9952.,
      10964., 11976., 8968.,  9984.,  11000., 12016., 8996.,  10016., 11036.,
      12056., 9024.,  10048., 11072., 12096., 9052.,  10080., 11108., 12136.,
      9080.,  10112., 11144., 12176., 9108.,  10144., 11180., 12216., 9136.,
      10176., 11216., 12256., 9948.,  11104., 12260., 13416., 9976.,  11136.,
      12296., 13456., 10004., 11168., 12332., 13496., 10032., 11200., 12368.,
      13536., 10060., 11232., 12404., 13576., 10088., 11264., 12440., 13616.,
      10116., 11296., 12476., 13656., 10144., 11328., 12512., 13696., 10172.,
      11360., 12548., 13736., 10200., 11392., 12584., 13776., 10228., 11424.,
      12620., 13816., 10256., 11456., 12656., 13856., 10284., 11488., 12692.,
      13896., 10312., 11520., 12728., 13936., 10340., 11552., 12764., 13976.,
      10368., 11584., 12800., 14016., 10396., 11616., 12836., 14056., 10424.,
      11648., 12872., 14096., 10452., 11680., 12908., 14136., 10480., 11712.,
      12944., 14176., 10508., 11744., 12980., 14216., 10536., 11776., 13016.,
      14256., 10564., 11808., 13052., 14296., 10592., 11840., 13088., 14336.,
      10620., 11872., 13124., 14376., 10648., 11904., 13160., 14416., 10676.,
      11936., 13196., 14456., 10704., 11968., 13232., 14496., 11516., 12896.,
      14276., 15656., 11544., 12928., 14312., 15696., 11572., 12960., 14348.,
      15736., 11600., 12992., 14384., 15776., 11628., 13024., 14420., 15816.,
      11656., 13056., 14456., 15856., 11684., 13088., 14492., 15896., 11712.,
      13120., 14528., 15936., 11740., 13152., 14564., 15976., 11768., 13184.,
      14600., 16016., 11796., 13216., 14636., 16056., 11824., 13248., 14672.,
      16096., 11852., 13280., 14708., 16136., 11880., 13312., 14744., 16176.,
      11908., 13344., 14780., 16216., 11936., 13376., 14816., 16256., 11964.,
      13408., 14852., 16296., 11992., 13440., 14888., 16336., 12020., 13472.,
      14924., 16376., 12048., 13504., 14960., 16416., 12076., 13536., 14996.,
      16456., 12104., 13568., 15032., 16496., 12132., 13600., 15068., 16536.,
      12160., 13632., 15104., 16576., 12188., 13664., 15140., 16616., 12216.,
      13696., 15176., 16656., 12244., 13728., 15212., 16696., 12272., 13760.,
      15248., 16736., 13084., 14688., 16292., 17896., 13112., 14720., 16328.,
      17936., 13140., 14752., 16364., 17976., 13168., 14784., 16400., 18016.,
      13196., 14816., 16436., 18056., 13224., 14848., 16472., 18096., 13252.,
      14880., 16508., 18136., 13280., 14912., 16544., 18176., 13308., 14944.,
      16580., 18216., 13336., 14976., 16616., 18256., 13364., 15008., 16652.,
      18296., 13392., 15040., 16688., 18336., 13420., 15072., 16724., 18376.,
      13448., 15104., 16760., 18416., 13476., 15136., 16796., 18456., 13504.,
      15168., 16832., 18496., 13532., 15200., 16868., 18536., 13560., 15232.,
      16904., 18576., 13588., 15264., 16940., 18616., 13616., 15296., 16976.,
      18656., 13644., 15328., 17012., 18696., 13672., 15360., 17048., 18736.,
      13700., 15392., 17084., 18776., 13728., 15424., 17120., 18816., 13756.,
      15456., 17156., 18856., 13784., 15488., 17192., 18896., 13812., 15520.,
      17228., 18936., 13840., 15552., 17264., 18976., 14652., 16480., 18308.,
      20136., 14680., 16512., 18344., 20176., 14708., 16544., 18380., 20216.,
      14736., 16576., 18416., 20256., 14764., 16608., 18452., 20296., 14792.,
      16640., 18488., 20336., 14820., 16672., 18524., 20376., 14848., 16704.,
      18560., 20416., 14876., 16736., 18596., 20456., 14904., 16768., 18632.,
      20496., 14932., 16800., 18668., 20536., 14960., 16832., 18704., 20576.,
      14988., 16864., 18740., 20616., 15016., 16896., 18776., 20656., 15044.,
      16928., 18812., 20696., 15072., 16960., 18848., 20736., 15100., 16992.,
      18884., 20776., 15128., 17024., 18920., 20816., 15156., 17056., 18956.,
      20856., 15184., 17088., 18992., 20896., 15212., 17120., 19028., 20936.,
      15240., 17152., 19064., 20976., 15268., 17184., 19100., 21016., 15296.,
      17216., 19136., 21056., 15324., 17248., 19172., 21096., 15352., 17280.,
      19208., 21136., 15380., 17312., 19244., 21176., 15408., 17344., 19280.,
      21216.};
  const std::array<int, 4> in_shape = {{1, 11, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1816., 1844., 2554., 2593., 2632., 1600., 1624., 2151., 2184., 3021.,
      3066., 3111., 1884., 1911., 2514., 2547., 3516., 3561., 3606., 2181.,
      2208., 2877., 2910., 4011., 4056., 4101., 2478., 2505., 3240., 3273.,
      4506., 4551., 4596., 2775., 2802., 1272., 1288., 1705., 1726., 1747.,
      1000., 1012., 1448., 1464., 1936., 1957., 1978., 1132., 1144.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      342., 352., 362.,  372.,  382.,  392.,  402.,  452.,  462., 472.,
      482., 492., 502.,  512.,  562.,  572.,  582.,  592.,  602., 612.,
      622., 672., 682.,  692.,  702.,  712.,  722.,  732.,  782., 792.,
      802., 812., 822.,  832.,  842.,  892.,  902.,  912.,  922., 932.,
      942., 952., 1002., 1012., 1022., 1032., 1042., 1052., 1062.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3392., 3632., 3444., 3688., 4748., 5108., 4820., 5186., 4892., 5264.,
      2956., 3200., 3000., 3248., 4008., 4302., 4068., 4368., 5601., 6042.,
      5682., 6132., 5763., 6222., 3468., 3768., 3516., 3822., 4668., 5028.,
      4728., 5094., 6492., 7032., 6573., 7122., 6654., 7212., 3996., 4362.,
      4044., 4416., 5328., 5754., 5388., 5820., 7383., 8022., 7464., 8112.,
      7545., 8202., 4524., 4956., 4572., 5010., 5988., 6480., 6048., 6546.,
      8274., 9012., 8355., 9102., 8436., 9192., 5052., 5550., 5100., 5604.,
      2260., 2544., 2288., 2576., 2984., 3410., 3020., 3452., 3056., 3494.,
      1712., 2000., 1732., 2024., 2568., 2896., 2596., 2928., 3380., 3872.,
      3416., 3914., 3452., 3956., 1932., 2264., 1952., 2288.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      584.,  684.,  600.,  704.,  616.,  724.,  632.,  744.,  648.,  764.,
      664.,  784.,  680.,  804.,  760.,  904.,  776.,  924.,  792.,  944.,
      808.,  964.,  824.,  984.,  840.,  1004., 856.,  1024., 936.,  1124.,
      952.,  1144., 968.,  1164., 984.,  1184., 1000., 1204., 1016., 1224.,
      1032., 1244., 1112., 1344., 1128., 1364., 1144., 1384., 1160., 1404.,
      1176., 1424., 1192., 1444., 1208., 1464., 1288., 1564., 1304., 1584.,
      1320., 1604., 1336., 1624., 1352., 1644., 1368., 1664., 1384., 1684.,
      1464., 1784., 1480., 1804., 1496., 1824., 1512., 1844., 1528., 1864.,
      1544., 1884., 1560., 1904., 1640., 2004., 1656., 2024., 1672., 2044.,
      1688., 2064., 1704., 2084., 1720., 2104., 1736., 2124.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6544.,  6784.,  7024.,  7264.,  6644.,  6888.,  7132.,  7376.,  9136.,
      9496.,  9856.,  10216., 9274.,  9640.,  10006., 10372., 9412.,  9784.,
      10156., 10528., 5668.,  5912.,  6156.,  6400.,  5752.,  6000.,  6248.,
      6496.,  7722.,  8016.,  8310.,  8604.,  7836.,  8136.,  8436.,  8736.,
      10761., 11202., 11643., 12084., 10914., 11364., 11814., 12264., 11067.,
      11526., 11985., 12444., 6636.,  6936.,  7236.,  7536.,  6726.,  7032.,
      7338.,  7644.,  8976.,  9336.,  9696.,  10056., 9090.,  9456.,  9822.,
      10188., 12444., 12984., 13524., 14064., 12597., 13146., 13695., 14244.,
      12750., 13308., 13866., 14424., 7626.,  7992.,  8358.,  8724.,  7716.,
      8088.,  8460.,  8832.,  10230., 10656., 11082., 11508., 10344., 10776.,
      11208., 11640., 14127., 14766., 15405., 16044., 14280., 14928., 15576.,
      16224., 14433., 15090., 15747., 16404., 8616.,  9048.,  9480.,  9912.,
      8706.,  9144.,  9582.,  10020., 11484., 11976., 12468., 12960., 11598.,
      12096., 12594., 13092., 15810., 16548., 17286., 18024., 15963., 16710.,
      17457., 18204., 16116., 16872., 17628., 18384., 9606.,  10104., 10602.,
      11100., 9696.,  10200., 10704., 11208., 4236.,  4520.,  4804.,  5088.,
      4288.,  4576.,  4864.,  5152.,  5542.,  5968.,  6394.,  6820.,  5608.,
      6040.,  6472.,  6904.,  5674.,  6112.,  6550.,  6988.,  3136.,  3424.,
      3712.,  4000.,  3172.,  3464.,  3756.,  4048.,  4808.,  5136.,  5464.,
      5792.,  4860.,  5192.,  5524.,  5856.,  6268.,  6760.,  7252.,  7744.,
      6334.,  6832.,  7330.,  7828.,  6400.,  6904.,  7408.,  7912.,  3532.,
      3864.,  4196.,  4528.,  3568.,  3904.,  4240.,  4576.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1068., 1168., 1268., 1368., 1096., 1200., 1304., 1408., 1124., 1232.,
      1340., 1448., 1152., 1264., 1376., 1488., 1180., 1296., 1412., 1528.,
      1208., 1328., 1448., 1568., 1236., 1360., 1484., 1608., 1376., 1520.,
      1664., 1808., 1404., 1552., 1700., 1848., 1432., 1584., 1736., 1888.,
      1460., 1616., 1772., 1928., 1488., 1648., 1808., 1968., 1516., 1680.,
      1844., 2008., 1544., 1712., 1880., 2048., 1684., 1872., 2060., 2248.,
      1712., 1904., 2096., 2288., 1740., 1936., 2132., 2328., 1768., 1968.,
      2168., 2368., 1796., 2000., 2204., 2408., 1824., 2032., 2240., 2448.,
      1852., 2064., 2276., 2488., 1992., 2224., 2456., 2688., 2020., 2256.,
      2492., 2728., 2048., 2288., 2528., 2768., 2076., 2320., 2564., 2808.,
      2104., 2352., 2600., 2848., 2132., 2384., 2636., 2888., 2160., 2416.,
      2672., 2928., 2300., 2576., 2852., 3128., 2328., 2608., 2888., 3168.,
      2356., 2640., 2924., 3208., 2384., 2672., 2960., 3248., 2412., 2704.,
      2996., 3288., 2440., 2736., 3032., 3328., 2468., 2768., 3068., 3368.,
      2608., 2928., 3248., 3568., 2636., 2960., 3284., 3608., 2664., 2992.,
      3320., 3648., 2692., 3024., 3356., 3688., 2720., 3056., 3392., 3728.,
      2748., 3088., 3428., 3768., 2776., 3120., 3464., 3808., 2916., 3280.,
      3644., 4008., 2944., 3312., 3680., 4048., 2972., 3344., 3716., 4088.,
      3000., 3376., 3752., 4128., 3028., 3408., 3788., 4168., 3056., 3440.,
      3824., 4208., 3084., 3472., 3860., 4248.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3604., 3632., 3660., 3688., 5069., 5108., 5147., 5186., 5225., 5264.,
      3176., 3200., 3224., 3248., 4269., 4302., 4335., 4368., 5997., 6042.,
      6087., 6132., 6177., 6222., 3741., 3768., 3795., 3822., 4995., 5028.,
      5061., 5094., 6987., 7032., 7077., 7122., 7167., 7212., 4335., 4362.,
      4389., 4416., 5721., 5754., 5787., 5820., 7977., 8022., 8067., 8112.,
      8157., 8202., 4929., 4956., 4983., 5010., 6447., 6480., 6513., 6546.,
      8967., 9012., 9057., 9102., 9147., 9192., 5523., 5550., 5577., 5604.,
      2528., 2544., 2560., 2576., 3389., 3410., 3431., 3452., 3473., 3494.,
      1988., 2000., 2012., 2024., 2880., 2896., 2912., 2928., 3851., 3872.,
      3893., 3914., 3935., 3956., 2252., 2264., 2276., 2288.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      674.,  684.,  694.,  704.,  714.,  724.,  734.,  744.,  754.,  764.,
      774.,  784.,  794.,  804.,  894.,  904.,  914.,  924.,  934.,  944.,
      954.,  964.,  974.,  984.,  994.,  1004., 1014., 1024., 1114., 1124.,
      1134., 1144., 1154., 1164., 1174., 1184., 1194., 1204., 1214., 1224.,
      1234., 1244., 1334., 1344., 1354., 1364., 1374., 1384., 1394., 1404.,
      1414., 1424., 1434., 1444., 1454., 1464., 1554., 1564., 1574., 1584.,
      1594., 1604., 1614., 1624., 1634., 1644., 1654., 1664., 1674., 1684.,
      1774., 1784., 1794., 1804., 1814., 1824., 1834., 1844., 1854., 1864.,
      1874., 1884., 1894., 1904., 1994., 2004., 2014., 2024., 2034., 2044.,
      2054., 2064., 2074., 2084., 2094., 2104., 2114., 2124.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      6732.,  7208.,  6784.,  7264.,  6836.,  7320.,  6888.,  7376.,  9424.,
      10138., 9496.,  10216., 9568.,  10294., 9640.,  10372., 9712.,  10450.,
      9784.,  10528., 5868.,  6352.,  5912.,  6400.,  5956.,  6448.,  6000.,
      6496.,  7956.,  8538.,  8016.,  8604.,  8076.,  8670.,  8136.,  8736.,
      11121., 11994., 11202., 12084., 11283., 12174., 11364., 12264., 11445.,
      12354., 11526., 12444., 6888.,  7482.,  6936.,  7536.,  6984.,  7590.,
      7032.,  7644.,  9276.,  9990.,  9336.,  10056., 9396.,  10122., 9456.,
      10188., 12903., 13974., 12984., 14064., 13065., 14154., 13146., 14244.,
      13227., 14334., 13308., 14424., 7944.,  8670.,  7992.,  8724.,  8040.,
      8778.,  8088.,  8832.,  10596., 11442., 10656., 11508., 10716., 11574.,
      10776., 11640., 14685., 15954., 14766., 16044., 14847., 16134., 14928.,
      16224., 15009., 16314., 15090., 16404., 9000.,  9858.,  9048.,  9912.,
      9096.,  9966.,  9144.,  10020., 11916., 12894., 11976., 12960., 12036.,
      13026., 12096., 13092., 16467., 17934., 16548., 18024., 16629., 18114.,
      16710., 18204., 16791., 18294., 16872., 18384., 10056., 11046., 10104.,
      11100., 10152., 11154., 10200., 11208., 4492.,  5056.,  4520.,  5088.,
      4548.,  5120.,  4576.,  5152.,  5932.,  6778.,  5968.,  6820.,  6004.,
      6862.,  6040.,  6904.,  6076.,  6946.,  6112.,  6988.,  3404.,  3976.,
      3424.,  4000.,  3444.,  4024.,  3464.,  4048.,  5108.,  5760.,  5136.,
      5792.,  5164.,  5824.,  5192.,  5856.,  6724.,  7702.,  6760.,  7744.,
      6796.,  7786.,  6832.,  7828.,  6868.,  7870.,  6904.,  7912.,  3844.,
      4504.,  3864.,  4528.,  3884.,  4552.,  3904.,  4576.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1152., 1348., 1168., 1368., 1184., 1388., 1200., 1408., 1216., 1428.,
      1232., 1448., 1248., 1468., 1264., 1488., 1280., 1508., 1296., 1528.,
      1312., 1548., 1328., 1568., 1344., 1588., 1360., 1608., 1504., 1788.,
      1520., 1808., 1536., 1828., 1552., 1848., 1568., 1868., 1584., 1888.,
      1600., 1908., 1616., 1928., 1632., 1948., 1648., 1968., 1664., 1988.,
      1680., 2008., 1696., 2028., 1712., 2048., 1856., 2228., 1872., 2248.,
      1888., 2268., 1904., 2288., 1920., 2308., 1936., 2328., 1952., 2348.,
      1968., 2368., 1984., 2388., 2000., 2408., 2016., 2428., 2032., 2448.,
      2048., 2468., 2064., 2488., 2208., 2668., 2224., 2688., 2240., 2708.,
      2256., 2728., 2272., 2748., 2288., 2768., 2304., 2788., 2320., 2808.,
      2336., 2828., 2352., 2848., 2368., 2868., 2384., 2888., 2400., 2908.,
      2416., 2928., 2560., 3108., 2576., 3128., 2592., 3148., 2608., 3168.,
      2624., 3188., 2640., 3208., 2656., 3228., 2672., 3248., 2688., 3268.,
      2704., 3288., 2720., 3308., 2736., 3328., 2752., 3348., 2768., 3368.,
      2912., 3548., 2928., 3568., 2944., 3588., 2960., 3608., 2976., 3628.,
      2992., 3648., 3008., 3668., 3024., 3688., 3040., 3708., 3056., 3728.,
      3072., 3748., 3088., 3768., 3104., 3788., 3120., 3808., 3264., 3988.,
      3280., 4008., 3296., 4028., 3312., 4048., 3328., 4068., 3344., 4088.,
      3360., 4108., 3376., 4128., 3392., 4148., 3408., 4168., 3424., 4188.,
      3440., 4208., 3456., 4228., 3472., 4248.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      12988., 13464., 13940., 14416., 13088., 13568., 14048., 14528., 13188.,
      13672., 14156., 14640., 13288., 13776., 14264., 14752., 18134., 18848.,
      19562., 20276., 18272., 18992., 19712., 20432., 18410., 19136., 19862.,
      20588., 18548., 19280., 20012., 20744., 18686., 19424., 20162., 20900.,
      18824., 19568., 20312., 21056., 11252., 11736., 12220., 12704., 11336.,
      11824., 12312., 12800., 11420., 11912., 12404., 12896., 11504., 12000.,
      12496., 12992., 15330., 15912., 16494., 17076., 15444., 16032., 16620.,
      17208., 15558., 16152., 16746., 17340., 15672., 16272., 16872., 17472.,
      21369., 22242., 23115., 23988., 21522., 22404., 23286., 24168., 21675.,
      22566., 23457., 24348., 21828., 22728., 23628., 24528., 21981., 22890.,
      23799., 24708., 22134., 23052., 23970., 24888., 13182., 13776., 14370.,
      14964., 13272., 13872., 14472., 15072., 13362., 13968., 14574., 15180.,
      13452., 14064., 14676., 15288., 17838., 18552., 19266., 19980., 17952.,
      18672., 19392., 20112., 18066., 18792., 19518., 20244., 18180., 18912.,
      19644., 20376., 24735., 25806., 26877., 27948., 24888., 25968., 27048.,
      28128., 25041., 26130., 27219., 28308., 25194., 26292., 27390., 28488.,
      25347., 26454., 27561., 28668., 25500., 26616., 27732., 28848., 15162.,
      15888., 16614., 17340., 15252., 15984., 16716., 17448., 15342., 16080.,
      16818., 17556., 15432., 16176., 16920., 17664., 20346., 21192., 22038.,
      22884., 20460., 21312., 22164., 23016., 20574., 21432., 22290., 23148.,
      20688., 21552., 22416., 23280., 28101., 29370., 30639., 31908., 28254.,
      29532., 30810., 32088., 28407., 29694., 30981., 32268., 28560., 29856.,
      31152., 32448., 28713., 30018., 31323., 32628., 28866., 30180., 31494.,
      32808., 17142., 18000., 18858., 19716., 17232., 18096., 18960., 19824.,
      17322., 18192., 19062., 19932., 17412., 18288., 19164., 20040., 22854.,
      23832., 24810., 25788., 22968., 23952., 24936., 25920., 23082., 24072.,
      25062., 26052., 23196., 24192., 25188., 26184., 31467., 32934., 34401.,
      35868., 31620., 33096., 34572., 36048., 31773., 33258., 34743., 36228.,
      31926., 33420., 34914., 36408., 32079., 33582., 35085., 36588., 32232.,
      33744., 35256., 36768., 19122., 20112., 21102., 22092., 19212., 20208.,
      21204., 22200., 19302., 20304., 21306., 22308., 19392., 20400., 21408.,
      22416., 8420.,  8984.,  9548.,  10112., 8472.,  9040.,  9608.,  10176.,
      8524.,  9096.,  9668.,  10240., 8576.,  9152.,  9728.,  10304., 11018.,
      11864., 12710., 13556., 11084., 11936., 12788., 13640., 11150., 12008.,
      12866., 13724., 11216., 12080., 12944., 13808., 11282., 12152., 13022.,
      13892., 11348., 12224., 13100., 13976., 6236.,  6808.,  7380.,  7952.,
      6272.,  6848.,  7424.,  8000.,  6308.,  6888.,  7468.,  8048.,  6344.,
      6928.,  7512.,  8096.,  9564.,  10216., 10868., 11520., 9616.,  10272.,
      10928., 11584., 9668.,  10328., 10988., 11648., 9720.,  10384., 11048.,
      11712., 12470., 13448., 14426., 15404., 12536., 13520., 14504., 15488.,
      12602., 13592., 14582., 15572., 12668., 13664., 14660., 15656., 12734.,
      13736., 14738., 15740., 12800., 13808., 14816., 15824., 7028.,  7688.,
      8348.,  9008.,  7064.,  7728.,  8392.,  9056.,  7100.,  7768.,  8436.,
      9104.,  7136.,  7808.,  8480.,  9152.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2108., 2304., 2500., 2696., 2136., 2336., 2536., 2736., 2164., 2368.,
      2572., 2776., 2192., 2400., 2608., 2816., 2220., 2432., 2644., 2856.,
      2248., 2464., 2680., 2896., 2276., 2496., 2716., 2936., 2304., 2528.,
      2752., 2976., 2332., 2560., 2788., 3016., 2360., 2592., 2824., 3056.,
      2388., 2624., 2860., 3096., 2416., 2656., 2896., 3136., 2444., 2688.,
      2932., 3176., 2472., 2720., 2968., 3216., 2724., 3008., 3292., 3576.,
      2752., 3040., 3328., 3616., 2780., 3072., 3364., 3656., 2808., 3104.,
      3400., 3696., 2836., 3136., 3436., 3736., 2864., 3168., 3472., 3776.,
      2892., 3200., 3508., 3816., 2920., 3232., 3544., 3856., 2948., 3264.,
      3580., 3896., 2976., 3296., 3616., 3936., 3004., 3328., 3652., 3976.,
      3032., 3360., 3688., 4016., 3060., 3392., 3724., 4056., 3088., 3424.,
      3760., 4096., 3340., 3712., 4084., 4456., 3368., 3744., 4120., 4496.,
      3396., 3776., 4156., 4536., 3424., 3808., 4192., 4576., 3452., 3840.,
      4228., 4616., 3480., 3872., 4264., 4656., 3508., 3904., 4300., 4696.,
      3536., 3936., 4336., 4736., 3564., 3968., 4372., 4776., 3592., 4000.,
      4408., 4816., 3620., 4032., 4444., 4856., 3648., 4064., 4480., 4896.,
      3676., 4096., 4516., 4936., 3704., 4128., 4552., 4976., 3956., 4416.,
      4876., 5336., 3984., 4448., 4912., 5376., 4012., 4480., 4948., 5416.,
      4040., 4512., 4984., 5456., 4068., 4544., 5020., 5496., 4096., 4576.,
      5056., 5536., 4124., 4608., 5092., 5576., 4152., 4640., 5128., 5616.,
      4180., 4672., 5164., 5656., 4208., 4704., 5200., 5696., 4236., 4736.,
      5236., 5736., 4264., 4768., 5272., 5776., 4292., 4800., 5308., 5816.,
      4320., 4832., 5344., 5856., 4572., 5120., 5668., 6216., 4600., 5152.,
      5704., 6256., 4628., 5184., 5740., 6296., 4656., 5216., 5776., 6336.,
      4684., 5248., 5812., 6376., 4712., 5280., 5848., 6416., 4740., 5312.,
      5884., 6456., 4768., 5344., 5920., 6496., 4796., 5376., 5956., 6536.,
      4824., 5408., 5992., 6576., 4852., 5440., 6028., 6616., 4880., 5472.,
      6064., 6656., 4908., 5504., 6100., 6696., 4936., 5536., 6136., 6736.,
      5188., 5824., 6460., 7096., 5216., 5856., 6496., 7136., 5244., 5888.,
      6532., 7176., 5272., 5920., 6568., 7216., 5300., 5952., 6604., 7256.,
      5328., 5984., 6640., 7296., 5356., 6016., 6676., 7336., 5384., 6048.,
      6712., 7376., 5412., 6080., 6748., 7416., 5440., 6112., 6784., 7456.,
      5468., 6144., 6820., 7496., 5496., 6176., 6856., 7536., 5524., 6208.,
      6892., 7576., 5552., 6240., 6928., 7616., 5804., 6528., 7252., 7976.,
      5832., 6560., 7288., 8016., 5860., 6592., 7324., 8056., 5888., 6624.,
      7360., 8096., 5916., 6656., 7396., 8136., 5944., 6688., 7432., 8176.,
      5972., 6720., 7468., 8216., 6000., 6752., 7504., 8256., 6028., 6784.,
      7540., 8296., 6056., 6816., 7576., 8336., 6084., 6848., 7612., 8376.,
      6112., 6880., 7648., 8416., 6140., 6912., 7684., 8456., 6168., 6944.,
      7720., 8496.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7180.,  7208.,  7236.,  7264.,  7292.,  7320.,  7348.,  7376.,  10099.,
      10138., 10177., 10216., 10255., 10294., 10333., 10372., 10411., 10450.,
      10489., 10528., 6328.,  6352.,  6376.,  6400.,  6424.,  6448.,  6472.,
      6496.,  8505.,  8538.,  8571.,  8604.,  8637.,  8670.,  8703.,  8736.,
      11949., 11994., 12039., 12084., 12129., 12174., 12219., 12264., 12309.,
      12354., 12399., 12444., 7455.,  7482.,  7509.,  7536.,  7563.,  7590.,
      7617.,  7644.,  9957.,  9990.,  10023., 10056., 10089., 10122., 10155.,
      10188., 13929., 13974., 14019., 14064., 14109., 14154., 14199., 14244.,
      14289., 14334., 14379., 14424., 8643.,  8670.,  8697.,  8724.,  8751.,
      8778.,  8805.,  8832.,  11409., 11442., 11475., 11508., 11541., 11574.,
      11607., 11640., 15909., 15954., 15999., 16044., 16089., 16134., 16179.,
      16224., 16269., 16314., 16359., 16404., 9831.,  9858.,  9885.,  9912.,
      9939.,  9966.,  9993.,  10020., 12861., 12894., 12927., 12960., 12993.,
      13026., 13059., 13092., 17889., 17934., 17979., 18024., 18069., 18114.,
      18159., 18204., 18249., 18294., 18339., 18384., 11019., 11046., 11073.,
      11100., 11127., 11154., 11181., 11208., 5040.,  5056.,  5072.,  5088.,
      5104.,  5120.,  5136.,  5152.,  6757.,  6778.,  6799.,  6820.,  6841.,
      6862.,  6883.,  6904.,  6925.,  6946.,  6967.,  6988.,  3964.,  3976.,
      3988.,  4000.,  4012.,  4024.,  4036.,  4048.,  5744.,  5760.,  5776.,
      5792.,  5808.,  5824.,  5840.,  5856.,  7681.,  7702.,  7723.,  7744.,
      7765.,  7786.,  7807.,  7828.,  7849.,  7870.,  7891.,  7912.,  4492.,
      4504.,  4516.,  4528.,  4540.,  4552.,  4564.,  4576.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1338., 1348., 1358., 1368., 1378., 1388., 1398., 1408., 1418., 1428.,
      1438., 1448., 1458., 1468., 1478., 1488., 1498., 1508., 1518., 1528.,
      1538., 1548., 1558., 1568., 1578., 1588., 1598., 1608., 1778., 1788.,
      1798., 1808., 1818., 1828., 1838., 1848., 1858., 1868., 1878., 1888.,
      1898., 1908., 1918., 1928., 1938., 1948., 1958., 1968., 1978., 1988.,
      1998., 2008., 2018., 2028., 2038., 2048., 2218., 2228., 2238., 2248.,
      2258., 2268., 2278., 2288., 2298., 2308., 2318., 2328., 2338., 2348.,
      2358., 2368., 2378., 2388., 2398., 2408., 2418., 2428., 2438., 2448.,
      2458., 2468., 2478., 2488., 2658., 2668., 2678., 2688., 2698., 2708.,
      2718., 2728., 2738., 2748., 2758., 2768., 2778., 2788., 2798., 2808.,
      2818., 2828., 2838., 2848., 2858., 2868., 2878., 2888., 2898., 2908.,
      2918., 2928., 3098., 3108., 3118., 3128., 3138., 3148., 3158., 3168.,
      3178., 3188., 3198., 3208., 3218., 3228., 3238., 3248., 3258., 3268.,
      3278., 3288., 3298., 3308., 3318., 3328., 3338., 3348., 3358., 3368.,
      3538., 3548., 3558., 3568., 3578., 3588., 3598., 3608., 3618., 3628.,
      3638., 3648., 3658., 3668., 3678., 3688., 3698., 3708., 3718., 3728.,
      3738., 3748., 3758., 3768., 3778., 3788., 3798., 3808., 3978., 3988.,
      3998., 4008., 4018., 4028., 4038., 4048., 4058., 4068., 4078., 4088.,
      4098., 4108., 4118., 4128., 4138., 4148., 4158., 4168., 4178., 4188.,
      4198., 4208., 4218., 4228., 4238., 4248.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13412., 14360., 13464., 14416., 13516., 14472., 13568., 14528., 13620.,
      14584., 13672., 14640., 13724., 14696., 13776., 14752., 18776., 20198.,
      18848., 20276., 18920., 20354., 18992., 20432., 19064., 20510., 19136.,
      20588., 19208., 20666., 19280., 20744., 19352., 20822., 19424., 20900.,
      19496., 20978., 19568., 21056., 11692., 12656., 11736., 12704., 11780.,
      12752., 11824., 12800., 11868., 12848., 11912., 12896., 11956., 12944.,
      12000., 12992., 15852., 17010., 15912., 17076., 15972., 17142., 16032.,
      17208., 16092., 17274., 16152., 17340., 16212., 17406., 16272., 17472.,
      22161., 23898., 22242., 23988., 22323., 24078., 22404., 24168., 22485.,
      24258., 22566., 24348., 22647., 24438., 22728., 24528., 22809., 24618.,
      22890., 24708., 22971., 24798., 23052., 24888., 13728., 14910., 13776.,
      14964., 13824., 15018., 13872., 15072., 13920., 15126., 13968., 15180.,
      14016., 15234., 14064., 15288., 18492., 19914., 18552., 19980., 18612.,
      20046., 18672., 20112., 18732., 20178., 18792., 20244., 18852., 20310.,
      18912., 20376., 25725., 27858., 25806., 27948., 25887., 28038., 25968.,
      28128., 26049., 28218., 26130., 28308., 26211., 28398., 26292., 28488.,
      26373., 28578., 26454., 28668., 26535., 28758., 26616., 28848., 15840.,
      17286., 15888., 17340., 15936., 17394., 15984., 17448., 16032., 17502.,
      16080., 17556., 16128., 17610., 16176., 17664., 21132., 22818., 21192.,
      22884., 21252., 22950., 21312., 23016., 21372., 23082., 21432., 23148.,
      21492., 23214., 21552., 23280., 29289., 31818., 29370., 31908., 29451.,
      31998., 29532., 32088., 29613., 32178., 29694., 32268., 29775., 32358.,
      29856., 32448., 29937., 32538., 30018., 32628., 30099., 32718., 30180.,
      32808., 17952., 19662., 18000., 19716., 18048., 19770., 18096., 19824.,
      18144., 19878., 18192., 19932., 18240., 19986., 18288., 20040., 23772.,
      25722., 23832., 25788., 23892., 25854., 23952., 25920., 24012., 25986.,
      24072., 26052., 24132., 26118., 24192., 26184., 32853., 35778., 32934.,
      35868., 33015., 35958., 33096., 36048., 33177., 36138., 33258., 36228.,
      33339., 36318., 33420., 36408., 33501., 36498., 33582., 36588., 33663.,
      36678., 33744., 36768., 20064., 22038., 20112., 22092., 20160., 22146.,
      20208., 22200., 20256., 22254., 20304., 22308., 20352., 22362., 20400.,
      22416., 8956.,  10080., 8984.,  10112., 9012.,  10144., 9040.,  10176.,
      9068.,  10208., 9096.,  10240., 9124.,  10272., 9152.,  10304., 11828.,
      13514., 11864., 13556., 11900., 13598., 11936., 13640., 11972., 13682.,
      12008., 13724., 12044., 13766., 12080., 13808., 12116., 13850., 12152.,
      13892., 12188., 13934., 12224., 13976., 6788.,  7928.,  6808.,  7952.,
      6828.,  7976.,  6848.,  8000.,  6868.,  8024.,  6888.,  8048.,  6908.,
      8072.,  6928.,  8096.,  10188., 11488., 10216., 11520., 10244., 11552.,
      10272., 11584., 10300., 11616., 10328., 11648., 10356., 11680., 10384.,
      11712., 13412., 15362., 13448., 15404., 13484., 15446., 13520., 15488.,
      13556., 15530., 13592., 15572., 13628., 15614., 13664., 15656., 13700.,
      15698., 13736., 15740., 13772., 15782., 13808., 15824., 7668.,  8984.,
      7688.,  9008.,  7708.,  9032.,  7728.,  9056.,  7748.,  9080.,  7768.,
      9104.,  7788.,  9128.,  7808.,  9152.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2288., 2676., 2304., 2696., 2320., 2716., 2336., 2736., 2352., 2756.,
      2368., 2776., 2384., 2796., 2400., 2816., 2416., 2836., 2432., 2856.,
      2448., 2876., 2464., 2896., 2480., 2916., 2496., 2936., 2512., 2956.,
      2528., 2976., 2544., 2996., 2560., 3016., 2576., 3036., 2592., 3056.,
      2608., 3076., 2624., 3096., 2640., 3116., 2656., 3136., 2672., 3156.,
      2688., 3176., 2704., 3196., 2720., 3216., 2992., 3556., 3008., 3576.,
      3024., 3596., 3040., 3616., 3056., 3636., 3072., 3656., 3088., 3676.,
      3104., 3696., 3120., 3716., 3136., 3736., 3152., 3756., 3168., 3776.,
      3184., 3796., 3200., 3816., 3216., 3836., 3232., 3856., 3248., 3876.,
      3264., 3896., 3280., 3916., 3296., 3936., 3312., 3956., 3328., 3976.,
      3344., 3996., 3360., 4016., 3376., 4036., 3392., 4056., 3408., 4076.,
      3424., 4096., 3696., 4436., 3712., 4456., 3728., 4476., 3744., 4496.,
      3760., 4516., 3776., 4536., 3792., 4556., 3808., 4576., 3824., 4596.,
      3840., 4616., 3856., 4636., 3872., 4656., 3888., 4676., 3904., 4696.,
      3920., 4716., 3936., 4736., 3952., 4756., 3968., 4776., 3984., 4796.,
      4000., 4816., 4016., 4836., 4032., 4856., 4048., 4876., 4064., 4896.,
      4080., 4916., 4096., 4936., 4112., 4956., 4128., 4976., 4400., 5316.,
      4416., 5336., 4432., 5356., 4448., 5376., 4464., 5396., 4480., 5416.,
      4496., 5436., 4512., 5456., 4528., 5476., 4544., 5496., 4560., 5516.,
      4576., 5536., 4592., 5556., 4608., 5576., 4624., 5596., 4640., 5616.,
      4656., 5636., 4672., 5656., 4688., 5676., 4704., 5696., 4720., 5716.,
      4736., 5736., 4752., 5756., 4768., 5776., 4784., 5796., 4800., 5816.,
      4816., 5836., 4832., 5856., 5104., 6196., 5120., 6216., 5136., 6236.,
      5152., 6256., 5168., 6276., 5184., 6296., 5200., 6316., 5216., 6336.,
      5232., 6356., 5248., 6376., 5264., 6396., 5280., 6416., 5296., 6436.,
      5312., 6456., 5328., 6476., 5344., 6496., 5360., 6516., 5376., 6536.,
      5392., 6556., 5408., 6576., 5424., 6596., 5440., 6616., 5456., 6636.,
      5472., 6656., 5488., 6676., 5504., 6696., 5520., 6716., 5536., 6736.,
      5808., 7076., 5824., 7096., 5840., 7116., 5856., 7136., 5872., 7156.,
      5888., 7176., 5904., 7196., 5920., 7216., 5936., 7236., 5952., 7256.,
      5968., 7276., 5984., 7296., 6000., 7316., 6016., 7336., 6032., 7356.,
      6048., 7376., 6064., 7396., 6080., 7416., 6096., 7436., 6112., 7456.,
      6128., 7476., 6144., 7496., 6160., 7516., 6176., 7536., 6192., 7556.,
      6208., 7576., 6224., 7596., 6240., 7616., 6512., 7956., 6528., 7976.,
      6544., 7996., 6560., 8016., 6576., 8036., 6592., 8056., 6608., 8076.,
      6624., 8096., 6640., 8116., 6656., 8136., 6672., 8156., 6688., 8176.,
      6704., 8196., 6720., 8216., 6736., 8236., 6752., 8256., 6768., 8276.,
      6784., 8296., 6800., 8316., 6816., 8336., 6832., 8356., 6848., 8376.,
      6864., 8396., 6880., 8416., 6896., 8436., 6912., 8456., 6928., 8476.,
      6944., 8496.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      25876., 26824., 27772., 28720., 25976., 26928., 27880., 28832., 26076.,
      27032., 27988., 28944., 26176., 27136., 28096., 29056., 26276., 27240.,
      28204., 29168., 26376., 27344., 28312., 29280., 26476., 27448., 28420.,
      29392., 26576., 27552., 28528., 29504., 36130., 37552., 38974., 40396.,
      36268., 37696., 39124., 40552., 36406., 37840., 39274., 40708., 36544.,
      37984., 39424., 40864., 36682., 38128., 39574., 41020., 36820., 38272.,
      39724., 41176., 36958., 38416., 39874., 41332., 37096., 38560., 40024.,
      41488., 37234., 38704., 40174., 41644., 37372., 38848., 40324., 41800.,
      37510., 38992., 40474., 41956., 37648., 39136., 40624., 42112., 22420.,
      23384., 24348., 25312., 22504., 23472., 24440., 25408., 22588., 23560.,
      24532., 25504., 22672., 23648., 24624., 25600., 22756., 23736., 24716.,
      25696., 22840., 23824., 24808., 25792., 22924., 23912., 24900., 25888.,
      23008., 24000., 24992., 25984., 30546., 31704., 32862., 34020., 30660.,
      31824., 32988., 34152., 30774., 31944., 33114., 34284., 30888., 32064.,
      33240., 34416., 31002., 32184., 33366., 34548., 31116., 32304., 33492.,
      34680., 31230., 32424., 33618., 34812., 31344., 32544., 33744., 34944.,
      42585., 44322., 46059., 47796., 42738., 44484., 46230., 47976., 42891.,
      44646., 46401., 48156., 43044., 44808., 46572., 48336., 43197., 44970.,
      46743., 48516., 43350., 45132., 46914., 48696., 43503., 45294., 47085.,
      48876., 43656., 45456., 47256., 49056., 43809., 45618., 47427., 49236.,
      43962., 45780., 47598., 49416., 44115., 45942., 47769., 49596., 44268.,
      46104., 47940., 49776., 26274., 27456., 28638., 29820., 26364., 27552.,
      28740., 29928., 26454., 27648., 28842., 30036., 26544., 27744., 28944.,
      30144., 26634., 27840., 29046., 30252., 26724., 27936., 29148., 30360.,
      26814., 28032., 29250., 30468., 26904., 28128., 29352., 30576., 35562.,
      36984., 38406., 39828., 35676., 37104., 38532., 39960., 35790., 37224.,
      38658., 40092., 35904., 37344., 38784., 40224., 36018., 37464., 38910.,
      40356., 36132., 37584., 39036., 40488., 36246., 37704., 39162., 40620.,
      36360., 37824., 39288., 40752., 49317., 51450., 53583., 55716., 49470.,
      51612., 53754., 55896., 49623., 51774., 53925., 56076., 49776., 51936.,
      54096., 56256., 49929., 52098., 54267., 56436., 50082., 52260., 54438.,
      56616., 50235., 52422., 54609., 56796., 50388., 52584., 54780., 56976.,
      50541., 52746., 54951., 57156., 50694., 52908., 55122., 57336., 50847.,
      53070., 55293., 57516., 51000., 53232., 55464., 57696., 30234., 31680.,
      33126., 34572., 30324., 31776., 33228., 34680., 30414., 31872., 33330.,
      34788., 30504., 31968., 33432., 34896., 30594., 32064., 33534., 35004.,
      30684., 32160., 33636., 35112., 30774., 32256., 33738., 35220., 30864.,
      32352., 33840., 35328., 40578., 42264., 43950., 45636., 40692., 42384.,
      44076., 45768., 40806., 42504., 44202., 45900., 40920., 42624., 44328.,
      46032., 41034., 42744., 44454., 46164., 41148., 42864., 44580., 46296.,
      41262., 42984., 44706., 46428., 41376., 43104., 44832., 46560., 56049.,
      58578., 61107., 63636., 56202., 58740., 61278., 63816., 56355., 58902.,
      61449., 63996., 56508., 59064., 61620., 64176., 56661., 59226., 61791.,
      64356., 56814., 59388., 61962., 64536., 56967., 59550., 62133., 64716.,
      57120., 59712., 62304., 64896., 57273., 59874., 62475., 65076., 57426.,
      60036., 62646., 65256., 57579., 60198., 62817., 65436., 57732., 60360.,
      62988., 65616., 34194., 35904., 37614., 39324., 34284., 36000., 37716.,
      39432., 34374., 36096., 37818., 39540., 34464., 36192., 37920., 39648.,
      34554., 36288., 38022., 39756., 34644., 36384., 38124., 39864., 34734.,
      36480., 38226., 39972., 34824., 36576., 38328., 40080., 45594., 47544.,
      49494., 51444., 45708., 47664., 49620., 51576., 45822., 47784., 49746.,
      51708., 45936., 47904., 49872., 51840., 46050., 48024., 49998., 51972.,
      46164., 48144., 50124., 52104., 46278., 48264., 50250., 52236., 46392.,
      48384., 50376., 52368., 62781., 65706., 68631., 71556., 62934., 65868.,
      68802., 71736., 63087., 66030., 68973., 71916., 63240., 66192., 69144.,
      72096., 63393., 66354., 69315., 72276., 63546., 66516., 69486., 72456.,
      63699., 66678., 69657., 72636., 63852., 66840., 69828., 72816., 64005.,
      67002., 69999., 72996., 64158., 67164., 70170., 73176., 64311., 67326.,
      70341., 73356., 64464., 67488., 70512., 73536., 38154., 40128., 42102.,
      44076., 38244., 40224., 42204., 44184., 38334., 40320., 42306., 44292.,
      38424., 40416., 42408., 44400., 38514., 40512., 42510., 44508., 38604.,
      40608., 42612., 44616., 38694., 40704., 42714., 44724., 38784., 40800.,
      42816., 44832., 16788., 17912., 19036., 20160., 16840., 17968., 19096.,
      20224., 16892., 18024., 19156., 20288., 16944., 18080., 19216., 20352.,
      16996., 18136., 19276., 20416., 17048., 18192., 19336., 20480., 17100.,
      18248., 19396., 20544., 17152., 18304., 19456., 20608., 21970., 23656.,
      25342., 27028., 22036., 23728., 25420., 27112., 22102., 23800., 25498.,
      27196., 22168., 23872., 25576., 27280., 22234., 23944., 25654., 27364.,
      22300., 24016., 25732., 27448., 22366., 24088., 25810., 27532., 22432.,
      24160., 25888., 27616., 22498., 24232., 25966., 27700., 22564., 24304.,
      26044., 27784., 22630., 24376., 26122., 27868., 22696., 24448., 26200.,
      27952., 12436., 13576., 14716., 15856., 12472., 13616., 14760., 15904.,
      12508., 13656., 14804., 15952., 12544., 13696., 14848., 16000., 12580.,
      13736., 14892., 16048., 12616., 13776., 14936., 16096., 12652., 13816.,
      14980., 16144., 12688., 13856., 15024., 16192., 19076., 20376., 21676.,
      22976., 19128., 20432., 21736., 23040., 19180., 20488., 21796., 23104.,
      19232., 20544., 21856., 23168., 19284., 20600., 21916., 23232., 19336.,
      20656., 21976., 23296., 19388., 20712., 22036., 23360., 19440., 20768.,
      22096., 23424., 24874., 26824., 28774., 30724., 24940., 26896., 28852.,
      30808., 25006., 26968., 28930., 30892., 25072., 27040., 29008., 30976.,
      25138., 27112., 29086., 31060., 25204., 27184., 29164., 31144., 25270.,
      27256., 29242., 31228., 25336., 27328., 29320., 31312., 25402., 27400.,
      29398., 31396., 25468., 27472., 29476., 31480., 25534., 27544., 29554.,
      31564., 25600., 27616., 29632., 31648., 14020., 15336., 16652., 17968.,
      14056., 15376., 16696., 18016., 14092., 15416., 16740., 18064., 14128.,
      15456., 16784., 18112., 14164., 15496., 16828., 18160., 14200., 15536.,
      16872., 18208., 14236., 15576., 16916., 18256., 14272., 15616., 16960.,
      18304.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4188.,  4576.,  4964.,  5352.,  4216.,  4608.,  5000.,  5392.,  4244.,
      4640.,  5036.,  5432.,  4272.,  4672.,  5072.,  5472.,  4300.,  4704.,
      5108.,  5512.,  4328.,  4736.,  5144.,  5552.,  4356.,  4768.,  5180.,
      5592.,  4384.,  4800.,  5216.,  5632.,  4412.,  4832.,  5252.,  5672.,
      4440.,  4864.,  5288.,  5712.,  4468.,  4896.,  5324.,  5752.,  4496.,
      4928.,  5360.,  5792.,  4524.,  4960.,  5396.,  5832.,  4552.,  4992.,
      5432.,  5872.,  4580.,  5024.,  5468.,  5912.,  4608.,  5056.,  5504.,
      5952.,  4636.,  5088.,  5540.,  5992.,  4664.,  5120.,  5576.,  6032.,
      4692.,  5152.,  5612.,  6072.,  4720.,  5184.,  5648.,  6112.,  4748.,
      5216.,  5684.,  6152.,  4776.,  5248.,  5720.,  6192.,  4804.,  5280.,
      5756.,  6232.,  4832.,  5312.,  5792.,  6272.,  4860.,  5344.,  5828.,
      6312.,  4888.,  5376.,  5864.,  6352.,  4916.,  5408.,  5900.,  6392.,
      4944.,  5440.,  5936.,  6432.,  5420.,  5984.,  6548.,  7112.,  5448.,
      6016.,  6584.,  7152.,  5476.,  6048.,  6620.,  7192.,  5504.,  6080.,
      6656.,  7232.,  5532.,  6112.,  6692.,  7272.,  5560.,  6144.,  6728.,
      7312.,  5588.,  6176.,  6764.,  7352.,  5616.,  6208.,  6800.,  7392.,
      5644.,  6240.,  6836.,  7432.,  5672.,  6272.,  6872.,  7472.,  5700.,
      6304.,  6908.,  7512.,  5728.,  6336.,  6944.,  7552.,  5756.,  6368.,
      6980.,  7592.,  5784.,  6400.,  7016.,  7632.,  5812.,  6432.,  7052.,
      7672.,  5840.,  6464.,  7088.,  7712.,  5868.,  6496.,  7124.,  7752.,
      5896.,  6528.,  7160.,  7792.,  5924.,  6560.,  7196.,  7832.,  5952.,
      6592.,  7232.,  7872.,  5980.,  6624.,  7268.,  7912.,  6008.,  6656.,
      7304.,  7952.,  6036.,  6688.,  7340.,  7992.,  6064.,  6720.,  7376.,
      8032.,  6092.,  6752.,  7412.,  8072.,  6120.,  6784.,  7448.,  8112.,
      6148.,  6816.,  7484.,  8152.,  6176.,  6848.,  7520.,  8192.,  6652.,
      7392.,  8132.,  8872.,  6680.,  7424.,  8168.,  8912.,  6708.,  7456.,
      8204.,  8952.,  6736.,  7488.,  8240.,  8992.,  6764.,  7520.,  8276.,
      9032.,  6792.,  7552.,  8312.,  9072.,  6820.,  7584.,  8348.,  9112.,
      6848.,  7616.,  8384.,  9152.,  6876.,  7648.,  8420.,  9192.,  6904.,
      7680.,  8456.,  9232.,  6932.,  7712.,  8492.,  9272.,  6960.,  7744.,
      8528.,  9312.,  6988.,  7776.,  8564.,  9352.,  7016.,  7808.,  8600.,
      9392.,  7044.,  7840.,  8636.,  9432.,  7072.,  7872.,  8672.,  9472.,
      7100.,  7904.,  8708.,  9512.,  7128.,  7936.,  8744.,  9552.,  7156.,
      7968.,  8780.,  9592.,  7184.,  8000.,  8816.,  9632.,  7212.,  8032.,
      8852.,  9672.,  7240.,  8064.,  8888.,  9712.,  7268.,  8096.,  8924.,
      9752.,  7296.,  8128.,  8960.,  9792.,  7324.,  8160.,  8996.,  9832.,
      7352.,  8192.,  9032.,  9872.,  7380.,  8224.,  9068.,  9912.,  7408.,
      8256.,  9104.,  9952.,  7884.,  8800.,  9716.,  10632., 7912.,  8832.,
      9752.,  10672., 7940.,  8864.,  9788.,  10712., 7968.,  8896.,  9824.,
      10752., 7996.,  8928.,  9860.,  10792., 8024.,  8960.,  9896.,  10832.,
      8052.,  8992.,  9932.,  10872., 8080.,  9024.,  9968.,  10912., 8108.,
      9056.,  10004., 10952., 8136.,  9088.,  10040., 10992., 8164.,  9120.,
      10076., 11032., 8192.,  9152.,  10112., 11072., 8220.,  9184.,  10148.,
      11112., 8248.,  9216.,  10184., 11152., 8276.,  9248.,  10220., 11192.,
      8304.,  9280.,  10256., 11232., 8332.,  9312.,  10292., 11272., 8360.,
      9344.,  10328., 11312., 8388.,  9376.,  10364., 11352., 8416.,  9408.,
      10400., 11392., 8444.,  9440.,  10436., 11432., 8472.,  9472.,  10472.,
      11472., 8500.,  9504.,  10508., 11512., 8528.,  9536.,  10544., 11552.,
      8556.,  9568.,  10580., 11592., 8584.,  9600.,  10616., 11632., 8612.,
      9632.,  10652., 11672., 8640.,  9664.,  10688., 11712., 9116.,  10208.,
      11300., 12392., 9144.,  10240., 11336., 12432., 9172.,  10272., 11372.,
      12472., 9200.,  10304., 11408., 12512., 9228.,  10336., 11444., 12552.,
      9256.,  10368., 11480., 12592., 9284.,  10400., 11516., 12632., 9312.,
      10432., 11552., 12672., 9340.,  10464., 11588., 12712., 9368.,  10496.,
      11624., 12752., 9396.,  10528., 11660., 12792., 9424.,  10560., 11696.,
      12832., 9452.,  10592., 11732., 12872., 9480.,  10624., 11768., 12912.,
      9508.,  10656., 11804., 12952., 9536.,  10688., 11840., 12992., 9564.,
      10720., 11876., 13032., 9592.,  10752., 11912., 13072., 9620.,  10784.,
      11948., 13112., 9648.,  10816., 11984., 13152., 9676.,  10848., 12020.,
      13192., 9704.,  10880., 12056., 13232., 9732.,  10912., 12092., 13272.,
      9760.,  10944., 12128., 13312., 9788.,  10976., 12164., 13352., 9816.,
      11008., 12200., 13392., 9844.,  11040., 12236., 13432., 9872.,  11072.,
      12272., 13472., 10348., 11616., 12884., 14152., 10376., 11648., 12920.,
      14192., 10404., 11680., 12956., 14232., 10432., 11712., 12992., 14272.,
      10460., 11744., 13028., 14312., 10488., 11776., 13064., 14352., 10516.,
      11808., 13100., 14392., 10544., 11840., 13136., 14432., 10572., 11872.,
      13172., 14472., 10600., 11904., 13208., 14512., 10628., 11936., 13244.,
      14552., 10656., 11968., 13280., 14592., 10684., 12000., 13316., 14632.,
      10712., 12032., 13352., 14672., 10740., 12064., 13388., 14712., 10768.,
      12096., 13424., 14752., 10796., 12128., 13460., 14792., 10824., 12160.,
      13496., 14832., 10852., 12192., 13532., 14872., 10880., 12224., 13568.,
      14912., 10908., 12256., 13604., 14952., 10936., 12288., 13640., 14992.,
      10964., 12320., 13676., 15032., 10992., 12352., 13712., 15072., 11020.,
      12384., 13748., 15112., 11048., 12416., 13784., 15152., 11076., 12448.,
      13820., 15192., 11104., 12480., 13856., 15232., 11580., 13024., 14468.,
      15912., 11608., 13056., 14504., 15952., 11636., 13088., 14540., 15992.,
      11664., 13120., 14576., 16032., 11692., 13152., 14612., 16072., 11720.,
      13184., 14648., 16112., 11748., 13216., 14684., 16152., 11776., 13248.,
      14720., 16192., 11804., 13280., 14756., 16232., 11832., 13312., 14792.,
      16272., 11860., 13344., 14828., 16312., 11888., 13376., 14864., 16352.,
      11916., 13408., 14900., 16392., 11944., 13440., 14936., 16432., 11972.,
      13472., 14972., 16472., 12000., 13504., 15008., 16512., 12028., 13536.,
      15044., 16552., 12056., 13568., 15080., 16592., 12084., 13600., 15116.,
      16632., 12112., 13632., 15152., 16672., 12140., 13664., 15188., 16712.,
      12168., 13696., 15224., 16752., 12196., 13728., 15260., 16792., 12224.,
      13760., 15296., 16832., 12252., 13792., 15332., 16872., 12280., 13824.,
      15368., 16912., 12308., 13856., 15404., 16952., 12336., 13888., 15440.,
      16992.};
  const std::array<int, 4> in_shape = {{1, 12, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1996., 2767., 2806., 2845., 2884., 1756., 1780., 2364., 3273., 3318.,
      3363., 3408., 2067., 2094., 2760., 3813., 3858., 3903., 3948., 2391.,
      2418., 3156., 4353., 4398., 4443., 4488., 2715., 2742., 3552., 4893.,
      4938., 4983., 5028., 3039., 3066., 1396., 1849., 1870., 1891., 1912.,
      1096., 1108., 1588., 2101., 2122., 2143., 2164., 1240., 1252.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      370.,  380.,  390.,  400.,  410.,  420.,  430.,  490.,  500.,  510.,
      520.,  530.,  540.,  550.,  610.,  620.,  630.,  640.,  650.,  660.,
      670.,  730.,  740.,  750.,  760.,  770.,  780.,  790.,  850.,  860.,
      870.,  880.,  890.,  900.,  910.,  970.,  980.,  990.,  1000., 1010.,
      1020., 1030., 1090., 1100., 1110., 1120., 1130., 1140., 1150.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3728., 3992., 5144., 5534., 5216., 5612.,  5288., 5690., 5360., 5768.,
      3244., 3512., 3288., 3560., 4404., 4728.,  6069., 6546., 6150., 6636.,
      6231., 6726., 6312., 6816., 3804., 4134.,  3852., 4188., 5124., 5520.,
      7041., 7626., 7122., 7716., 7203., 7806.,  7284., 7896., 4380., 4782.,
      4428., 4836., 5844., 6312., 8013., 8706.,  8094., 8796., 8175., 8886.,
      8256., 8976., 4956., 5430., 5004., 5484.,  6564., 7104., 8985., 9786.,
      9066., 9876., 9147., 9966., 9228., 10056., 5532., 6078., 5580., 6132.,
      2480., 2792., 3236., 3698., 3272., 3740.,  3308., 3782., 3344., 3824.,
      1876., 2192., 1896., 2216., 2816., 3176.,  3668., 4202., 3704., 4244.,
      3740., 4286., 3776., 4328., 2116., 2480.,  2136., 2504.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      632.,  740.,  648.,  760.,  664.,  780.,  680.,  800.,  696.,  820.,
      712.,  840.,  728.,  860.,  824.,  980.,  840.,  1000., 856.,  1020.,
      872.,  1040., 888.,  1060., 904.,  1080., 920.,  1100., 1016., 1220.,
      1032., 1240., 1048., 1260., 1064., 1280., 1080., 1300., 1096., 1320.,
      1112., 1340., 1208., 1460., 1224., 1480., 1240., 1500., 1256., 1520.,
      1272., 1540., 1288., 1560., 1304., 1580., 1400., 1700., 1416., 1720.,
      1432., 1740., 1448., 1760., 1464., 1780., 1480., 1800., 1496., 1820.,
      1592., 1940., 1608., 1960., 1624., 1980., 1640., 2000., 1656., 2020.,
      1672., 2040., 1688., 2060., 1784., 2180., 1800., 2200., 1816., 2220.,
      1832., 2240., 1848., 2260., 1864., 2280., 1880., 2300.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7192.,  7456.,  7720.,  7984.,  9898.,  10288., 10678., 11068., 10036.,
      10432., 10828., 11224., 10174., 10576., 10978., 11380., 10312., 10720.,
      11128., 11536., 6220.,  6488.,  6756.,  7024.,  6304.,  6576.,  6848.,
      7120.,  8484.,  8808.,  9132.,  9456.,  11661., 12138., 12615., 13092.,
      11814., 12300., 12786., 13272., 11967., 12462., 12957., 13452., 12120.,
      12624., 13128., 13632., 7278.,  7608.,  7938.,  8268.,  7368.,  7704.,
      8040.,  8376.,  9852.,  10248., 10644., 11040., 13497., 14082., 14667.,
      15252., 13650., 14244., 14838., 15432., 13803., 14406., 15009., 15612.,
      13956., 14568., 15180., 15792., 8358.,  8760.,  9162.,  9564.,  8448.,
      8856.,  9264.,  9672.,  11220., 11688., 12156., 12624., 15333., 16026.,
      16719., 17412., 15486., 16188., 16890., 17592., 15639., 16350., 17061.,
      17772., 15792., 16512., 17232., 17952., 9438.,  9912.,  10386., 10860.,
      9528.,  10008., 10488., 10968., 12588., 13128., 13668., 14208., 17169.,
      17970., 18771., 19572., 17322., 18132., 18942., 19752., 17475., 18294.,
      19113., 19932., 17628., 18456., 19284., 20112., 10518., 11064., 11610.,
      12156., 10608., 11160., 11712., 12264., 4648.,  4960.,  5272.,  5584.,
      6010.,  6472.,  6934.,  7396.,  6076.,  6544.,  7012.,  7480.,  6142.,
      6616.,  7090.,  7564.,  6208.,  6688.,  7168.,  7648.,  3436.,  3752.,
      4068.,  4384.,  3472.,  3792.,  4112.,  4432.,  5272.,  5632.,  5992.,
      6352.,  6802.,  7336.,  7870.,  8404.,  6868.,  7408.,  7948.,  8488.,
      6934.,  7480.,  8026.,  8572.,  7000.,  7552.,  8104.,  8656.,  3868.,
      4232.,  4596.,  4960.,  3904.,  4272.,  4640.,  5008.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1156., 1264., 1372., 1480., 1184., 1296., 1408., 1520., 1212., 1328.,
      1444., 1560., 1240., 1360., 1480., 1600., 1268., 1392., 1516., 1640.,
      1296., 1424., 1552., 1680., 1324., 1456., 1588., 1720., 1492., 1648.,
      1804., 1960., 1520., 1680., 1840., 2000., 1548., 1712., 1876., 2040.,
      1576., 1744., 1912., 2080., 1604., 1776., 1948., 2120., 1632., 1808.,
      1984., 2160., 1660., 1840., 2020., 2200., 1828., 2032., 2236., 2440.,
      1856., 2064., 2272., 2480., 1884., 2096., 2308., 2520., 1912., 2128.,
      2344., 2560., 1940., 2160., 2380., 2600., 1968., 2192., 2416., 2640.,
      1996., 2224., 2452., 2680., 2164., 2416., 2668., 2920., 2192., 2448.,
      2704., 2960., 2220., 2480., 2740., 3000., 2248., 2512., 2776., 3040.,
      2276., 2544., 2812., 3080., 2304., 2576., 2848., 3120., 2332., 2608.,
      2884., 3160., 2500., 2800., 3100., 3400., 2528., 2832., 3136., 3440.,
      2556., 2864., 3172., 3480., 2584., 2896., 3208., 3520., 2612., 2928.,
      3244., 3560., 2640., 2960., 3280., 3600., 2668., 2992., 3316., 3640.,
      2836., 3184., 3532., 3880., 2864., 3216., 3568., 3920., 2892., 3248.,
      3604., 3960., 2920., 3280., 3640., 4000., 2948., 3312., 3676., 4040.,
      2976., 3344., 3712., 4080., 3004., 3376., 3748., 4120., 3172., 3568.,
      3964., 4360., 3200., 3600., 4000., 4400., 3228., 3632., 4036., 4440.,
      3256., 3664., 4072., 4480., 3284., 3696., 4108., 4520., 3312., 3728.,
      4144., 4560., 3340., 3760., 4180., 4600.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3964., 3992., 5495., 5534., 5573.,  5612.,  5651., 5690., 5729., 5768.,
      3488., 3512., 3536., 3560., 4695.,  4728.,  6501., 6546., 6591., 6636.,
      6681., 6726., 6771., 6816., 4107.,  4134.,  4161., 4188., 5487., 5520.,
      7581., 7626., 7671., 7716., 7761.,  7806.,  7851., 7896., 4755., 4782.,
      4809., 4836., 6279., 6312., 8661.,  8706.,  8751., 8796., 8841., 8886.,
      8931., 8976., 5403., 5430., 5457.,  5484.,  7071., 7104., 9741., 9786.,
      9831., 9876., 9921., 9966., 10011., 10056., 6051., 6078., 6105., 6132.,
      2776., 2792., 3677., 3698., 3719.,  3740.,  3761., 3782., 3803., 3824.,
      2180., 2192., 2204., 2216., 3160.,  3176.,  4181., 4202., 4223., 4244.,
      4265., 4286., 4307., 4328., 2468.,  2480.,  2492., 2504.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      730.,  740.,  750.,  760.,  770.,  780.,  790.,  800.,  810.,  820.,
      830.,  840.,  850.,  860.,  970.,  980.,  990.,  1000., 1010., 1020.,
      1030., 1040., 1050., 1060., 1070., 1080., 1090., 1100., 1210., 1220.,
      1230., 1240., 1250., 1260., 1270., 1280., 1290., 1300., 1310., 1320.,
      1330., 1340., 1450., 1460., 1470., 1480., 1490., 1500., 1510., 1520.,
      1530., 1540., 1550., 1560., 1570., 1580., 1690., 1700., 1710., 1720.,
      1730., 1740., 1750., 1760., 1770., 1780., 1790., 1800., 1810., 1820.,
      1930., 1940., 1950., 1960., 1970., 1980., 1990., 2000., 2010., 2020.,
      2030., 2040., 2050., 2060., 2170., 2180., 2190., 2200., 2210., 2220.,
      2230., 2240., 2250., 2260., 2270., 2280., 2290., 2300.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7404.,  7928.,  7456.,  7984.,  10216., 10990., 10288., 11068., 10360.,
      11146., 10432., 11224., 10504., 11302., 10576., 11380., 10648., 11458.,
      10720., 11536., 6444.,  6976.,  6488.,  7024.,  6532.,  7072.,  6576.,
      7120.,  8748.,  9390.,  8808.,  9456.,  12057., 13002., 12138., 13092.,
      12219., 13182., 12300., 13272., 12381., 13362., 12462., 13452., 12543.,
      13542., 12624., 13632., 7560.,  8214.,  7608.,  8268.,  7656.,  8322.,
      7704.,  8376.,  10188., 10974., 10248., 11040., 14001., 15162., 14082.,
      15252., 14163., 15342., 14244., 15432., 14325., 15522., 14406., 15612.,
      14487., 15702., 14568., 15792., 8712.,  9510.,  8760.,  9564.,  8808.,
      9618.,  8856.,  9672.,  11628., 12558., 11688., 12624., 15945., 17322.,
      16026., 17412., 16107., 17502., 16188., 17592., 16269., 17682., 16350.,
      17772., 16431., 17862., 16512., 17952., 9864.,  10806., 9912.,  10860.,
      9960.,  10914., 10008., 10968., 13068., 14142., 13128., 14208., 17889.,
      19482., 17970., 19572., 18051., 19662., 18132., 19752., 18213., 19842.,
      18294., 19932., 18375., 20022., 18456., 20112., 11016., 12102., 11064.,
      12156., 11112., 12210., 11160., 12264., 4932.,  5552.,  4960.,  5584.,
      6436.,  7354.,  6472.,  7396.,  6508.,  7438.,  6544.,  7480.,  6580.,
      7522.,  6616.,  7564.,  6652.,  7606.,  6688.,  7648.,  3732.,  4360.,
      3752.,  4384.,  3772.,  4408.,  3792.,  4432.,  5604.,  6320.,  5632.,
      6352.,  7300.,  8362.,  7336.,  8404.,  7372.,  8446.,  7408.,  8488.,
      7444.,  8530.,  7480.,  8572.,  7516.,  8614.,  7552.,  8656.,  4212.,
      4936.,  4232.,  4960.,  4252.,  4984.,  4272.,  5008.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1248., 1460., 1264., 1480., 1280., 1500., 1296., 1520., 1312., 1540.,
      1328., 1560., 1344., 1580., 1360., 1600., 1376., 1620., 1392., 1640.,
      1408., 1660., 1424., 1680., 1440., 1700., 1456., 1720., 1632., 1940.,
      1648., 1960., 1664., 1980., 1680., 2000., 1696., 2020., 1712., 2040.,
      1728., 2060., 1744., 2080., 1760., 2100., 1776., 2120., 1792., 2140.,
      1808., 2160., 1824., 2180., 1840., 2200., 2016., 2420., 2032., 2440.,
      2048., 2460., 2064., 2480., 2080., 2500., 2096., 2520., 2112., 2540.,
      2128., 2560., 2144., 2580., 2160., 2600., 2176., 2620., 2192., 2640.,
      2208., 2660., 2224., 2680., 2400., 2900., 2416., 2920., 2432., 2940.,
      2448., 2960., 2464., 2980., 2480., 3000., 2496., 3020., 2512., 3040.,
      2528., 3060., 2544., 3080., 2560., 3100., 2576., 3120., 2592., 3140.,
      2608., 3160., 2784., 3380., 2800., 3400., 2816., 3420., 2832., 3440.,
      2848., 3460., 2864., 3480., 2880., 3500., 2896., 3520., 2912., 3540.,
      2928., 3560., 2944., 3580., 2960., 3600., 2976., 3620., 2992., 3640.,
      3168., 3860., 3184., 3880., 3200., 3900., 3216., 3920., 3232., 3940.,
      3248., 3960., 3264., 3980., 3280., 4000., 3296., 4020., 3312., 4040.,
      3328., 4060., 3344., 4080., 3360., 4100., 3376., 4120., 3552., 4340.,
      3568., 4360., 3584., 4380., 3600., 4400., 3616., 4420., 3632., 4440.,
      3648., 4460., 3664., 4480., 3680., 4500., 3696., 4520., 3712., 4540.,
      3728., 4560., 3744., 4580., 3760., 4600.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14284., 14808., 15332., 15856., 14384., 14912., 15440., 15968., 19658.,
      20432., 21206., 21980., 19796., 20576., 21356., 22136., 19934., 20720.,
      21506., 22292., 20072., 20864., 21656., 22448., 20210., 21008., 21806.,
      22604., 20348., 21152., 21956., 22760., 20486., 21296., 22106., 22916.,
      20624., 21440., 22256., 23072., 12356., 12888., 13420., 13952., 12440.,
      12976., 13512., 14048., 12524., 13064., 13604., 14144., 12608., 13152.,
      13696., 14240., 16854., 17496., 18138., 18780., 16968., 17616., 18264.,
      18912., 23169., 24114., 25059., 26004., 23322., 24276., 25230., 26184.,
      23475., 24438., 25401., 26364., 23628., 24600., 25572., 26544., 23781.,
      24762., 25743., 26724., 23934., 24924., 25914., 26904., 24087., 25086.,
      26085., 27084., 24240., 25248., 26256., 27264., 14466., 15120., 15774.,
      16428., 14556., 15216., 15876., 16536., 14646., 15312., 15978., 16644.,
      14736., 15408., 16080., 16752., 19590., 20376., 21162., 21948., 19704.,
      20496., 21288., 22080., 26841., 28002., 29163., 30324., 26994., 28164.,
      29334., 30504., 27147., 28326., 29505., 30684., 27300., 28488., 29676.,
      30864., 27453., 28650., 29847., 31044., 27606., 28812., 30018., 31224.,
      27759., 28974., 30189., 31404., 27912., 29136., 30360., 31584., 16626.,
      17424., 18222., 19020., 16716., 17520., 18324., 19128., 16806., 17616.,
      18426., 19236., 16896., 17712., 18528., 19344., 22326., 23256., 24186.,
      25116., 22440., 23376., 24312., 25248., 30513., 31890., 33267., 34644.,
      30666., 32052., 33438., 34824., 30819., 32214., 33609., 35004., 30972.,
      32376., 33780., 35184., 31125., 32538., 33951., 35364., 31278., 32700.,
      34122., 35544., 31431., 32862., 34293., 35724., 31584., 33024., 34464.,
      35904., 18786., 19728., 20670., 21612., 18876., 19824., 20772., 21720.,
      18966., 19920., 20874., 21828., 19056., 20016., 20976., 21936., 25062.,
      26136., 27210., 28284., 25176., 26256., 27336., 28416., 34185., 35778.,
      37371., 38964., 34338., 35940., 37542., 39144., 34491., 36102., 37713.,
      39324., 34644., 36264., 37884., 39504., 34797., 36426., 38055., 39684.,
      34950., 36588., 38226., 39864., 35103., 36750., 38397., 40044., 35256.,
      36912., 38568., 40224., 20946., 22032., 23118., 24204., 21036., 22128.,
      23220., 24312., 21126., 22224., 23322., 24420., 21216., 22320., 23424.,
      24528., 9244.,  9864.,  10484., 11104., 9296.,  9920.,  10544., 11168.,
      11954., 12872., 13790., 14708., 12020., 12944., 13868., 14792., 12086.,
      13016., 13946., 14876., 12152., 13088., 14024., 14960., 12218., 13160.,
      14102., 15044., 12284., 13232., 14180., 15128., 12350., 13304., 14258.,
      15212., 12416., 13376., 14336., 15296., 6836.,  7464.,  8092.,  8720.,
      6872.,  7504.,  8136.,  8768.,  6908.,  7544.,  8180.,  8816.,  6944.,
      7584.,  8224.,  8864.,  10492., 11208., 11924., 12640., 10544., 11264.,
      11984., 12704., 13538., 14600., 15662., 16724., 13604., 14672., 15740.,
      16808., 13670., 14744., 15818., 16892., 13736., 14816., 15896., 16976.,
      13802., 14888., 15974., 17060., 13868., 14960., 16052., 17144., 13934.,
      15032., 16130., 17228., 14000., 15104., 16208., 17312., 7700.,  8424.,
      9148.,  9872.,  7736.,  8464.,  9192.,  9920.,  7772.,  8504.,  9236.,
      9968.,  7808.,  8544.,  9280.,  10016.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2284., 2496., 2708., 2920., 2312., 2528., 2744., 2960., 2340., 2560.,
      2780., 3000., 2368., 2592., 2816., 3040., 2396., 2624., 2852., 3080.,
      2424., 2656., 2888., 3120., 2452., 2688., 2924., 3160., 2480., 2720.,
      2960., 3200., 2508., 2752., 2996., 3240., 2536., 2784., 3032., 3280.,
      2564., 2816., 3068., 3320., 2592., 2848., 3104., 3360., 2620., 2880.,
      3140., 3400., 2648., 2912., 3176., 3440., 2956., 3264., 3572., 3880.,
      2984., 3296., 3608., 3920., 3012., 3328., 3644., 3960., 3040., 3360.,
      3680., 4000., 3068., 3392., 3716., 4040., 3096., 3424., 3752., 4080.,
      3124., 3456., 3788., 4120., 3152., 3488., 3824., 4160., 3180., 3520.,
      3860., 4200., 3208., 3552., 3896., 4240., 3236., 3584., 3932., 4280.,
      3264., 3616., 3968., 4320., 3292., 3648., 4004., 4360., 3320., 3680.,
      4040., 4400., 3628., 4032., 4436., 4840., 3656., 4064., 4472., 4880.,
      3684., 4096., 4508., 4920., 3712., 4128., 4544., 4960., 3740., 4160.,
      4580., 5000., 3768., 4192., 4616., 5040., 3796., 4224., 4652., 5080.,
      3824., 4256., 4688., 5120., 3852., 4288., 4724., 5160., 3880., 4320.,
      4760., 5200., 3908., 4352., 4796., 5240., 3936., 4384., 4832., 5280.,
      3964., 4416., 4868., 5320., 3992., 4448., 4904., 5360., 4300., 4800.,
      5300., 5800., 4328., 4832., 5336., 5840., 4356., 4864., 5372., 5880.,
      4384., 4896., 5408., 5920., 4412., 4928., 5444., 5960., 4440., 4960.,
      5480., 6000., 4468., 4992., 5516., 6040., 4496., 5024., 5552., 6080.,
      4524., 5056., 5588., 6120., 4552., 5088., 5624., 6160., 4580., 5120.,
      5660., 6200., 4608., 5152., 5696., 6240., 4636., 5184., 5732., 6280.,
      4664., 5216., 5768., 6320., 4972., 5568., 6164., 6760., 5000., 5600.,
      6200., 6800., 5028., 5632., 6236., 6840., 5056., 5664., 6272., 6880.,
      5084., 5696., 6308., 6920., 5112., 5728., 6344., 6960., 5140., 5760.,
      6380., 7000., 5168., 5792., 6416., 7040., 5196., 5824., 6452., 7080.,
      5224., 5856., 6488., 7120., 5252., 5888., 6524., 7160., 5280., 5920.,
      6560., 7200., 5308., 5952., 6596., 7240., 5336., 5984., 6632., 7280.,
      5644., 6336., 7028., 7720., 5672., 6368., 7064., 7760., 5700., 6400.,
      7100., 7800., 5728., 6432., 7136., 7840., 5756., 6464., 7172., 7880.,
      5784., 6496., 7208., 7920., 5812., 6528., 7244., 7960., 5840., 6560.,
      7280., 8000., 5868., 6592., 7316., 8040., 5896., 6624., 7352., 8080.,
      5924., 6656., 7388., 8120., 5952., 6688., 7424., 8160., 5980., 6720.,
      7460., 8200., 6008., 6752., 7496., 8240., 6316., 7104., 7892., 8680.,
      6344., 7136., 7928., 8720., 6372., 7168., 7964., 8760., 6400., 7200.,
      8000., 8800., 6428., 7232., 8036., 8840., 6456., 7264., 8072., 8880.,
      6484., 7296., 8108., 8920., 6512., 7328., 8144., 8960., 6540., 7360.,
      8180., 9000., 6568., 7392., 8216., 9040., 6596., 7424., 8252., 9080.,
      6624., 7456., 8288., 9120., 6652., 7488., 8324., 9160., 6680., 7520.,
      8360., 9200.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7900.,  7928.,  7956.,  7984.,  10951., 10990., 11029., 11068., 11107.,
      11146., 11185., 11224., 11263., 11302., 11341., 11380., 11419., 11458.,
      11497., 11536., 6952.,  6976.,  7000.,  7024.,  7048.,  7072.,  7096.,
      7120.,  9357.,  9390.,  9423.,  9456.,  12957., 13002., 13047., 13092.,
      13137., 13182., 13227., 13272., 13317., 13362., 13407., 13452., 13497.,
      13542., 13587., 13632., 8187.,  8214.,  8241.,  8268.,  8295.,  8322.,
      8349.,  8376.,  10941., 10974., 11007., 11040., 15117., 15162., 15207.,
      15252., 15297., 15342., 15387., 15432., 15477., 15522., 15567., 15612.,
      15657., 15702., 15747., 15792., 9483.,  9510.,  9537.,  9564.,  9591.,
      9618.,  9645.,  9672.,  12525., 12558., 12591., 12624., 17277., 17322.,
      17367., 17412., 17457., 17502., 17547., 17592., 17637., 17682., 17727.,
      17772., 17817., 17862., 17907., 17952., 10779., 10806., 10833., 10860.,
      10887., 10914., 10941., 10968., 14109., 14142., 14175., 14208., 19437.,
      19482., 19527., 19572., 19617., 19662., 19707., 19752., 19797., 19842.,
      19887., 19932., 19977., 20022., 20067., 20112., 12075., 12102., 12129.,
      12156., 12183., 12210., 12237., 12264., 5536.,  5552.,  5568.,  5584.,
      7333.,  7354.,  7375.,  7396.,  7417.,  7438.,  7459.,  7480.,  7501.,
      7522.,  7543.,  7564.,  7585.,  7606.,  7627.,  7648.,  4348.,  4360.,
      4372.,  4384.,  4396.,  4408.,  4420.,  4432.,  6304.,  6320.,  6336.,
      6352.,  8341.,  8362.,  8383.,  8404.,  8425.,  8446.,  8467.,  8488.,
      8509.,  8530.,  8551.,  8572.,  8593.,  8614.,  8635.,  8656.,  4924.,
      4936.,  4948.,  4960.,  4972.,  4984.,  4996.,  5008.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1450., 1460., 1470., 1480., 1490., 1500., 1510., 1520., 1530., 1540.,
      1550., 1560., 1570., 1580., 1590., 1600., 1610., 1620., 1630., 1640.,
      1650., 1660., 1670., 1680., 1690., 1700., 1710., 1720., 1930., 1940.,
      1950., 1960., 1970., 1980., 1990., 2000., 2010., 2020., 2030., 2040.,
      2050., 2060., 2070., 2080., 2090., 2100., 2110., 2120., 2130., 2140.,
      2150., 2160., 2170., 2180., 2190., 2200., 2410., 2420., 2430., 2440.,
      2450., 2460., 2470., 2480., 2490., 2500., 2510., 2520., 2530., 2540.,
      2550., 2560., 2570., 2580., 2590., 2600., 2610., 2620., 2630., 2640.,
      2650., 2660., 2670., 2680., 2890., 2900., 2910., 2920., 2930., 2940.,
      2950., 2960., 2970., 2980., 2990., 3000., 3010., 3020., 3030., 3040.,
      3050., 3060., 3070., 3080., 3090., 3100., 3110., 3120., 3130., 3140.,
      3150., 3160., 3370., 3380., 3390., 3400., 3410., 3420., 3430., 3440.,
      3450., 3460., 3470., 3480., 3490., 3500., 3510., 3520., 3530., 3540.,
      3550., 3560., 3570., 3580., 3590., 3600., 3610., 3620., 3630., 3640.,
      3850., 3860., 3870., 3880., 3890., 3900., 3910., 3920., 3930., 3940.,
      3950., 3960., 3970., 3980., 3990., 4000., 4010., 4020., 4030., 4040.,
      4050., 4060., 4070., 4080., 4090., 4100., 4110., 4120., 4330., 4340.,
      4350., 4360., 4370., 4380., 4390., 4400., 4410., 4420., 4430., 4440.,
      4450., 4460., 4470., 4480., 4490., 4500., 4510., 4520., 4530., 4540.,
      4550., 4560., 4570., 4580., 4590., 4600.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      14756., 15800., 14808., 15856., 14860., 15912., 14912., 15968., 20360.,
      21902., 20432., 21980., 20504., 22058., 20576., 22136., 20648., 22214.,
      20720., 22292., 20792., 22370., 20864., 22448., 20936., 22526., 21008.,
      22604., 21080., 22682., 21152., 22760., 21224., 22838., 21296., 22916.,
      21368., 22994., 21440., 23072., 12844., 13904., 12888., 13952., 12932.,
      14000., 12976., 14048., 13020., 14096., 13064., 14144., 13108., 14192.,
      13152., 14240., 17436., 18714., 17496., 18780., 17556., 18846., 17616.,
      18912., 24033., 25914., 24114., 26004., 24195., 26094., 24276., 26184.,
      24357., 26274., 24438., 26364., 24519., 26454., 24600., 26544., 24681.,
      26634., 24762., 26724., 24843., 26814., 24924., 26904., 25005., 26994.,
      25086., 27084., 25167., 27174., 25248., 27264., 15072., 16374., 15120.,
      16428., 15168., 16482., 15216., 16536., 15264., 16590., 15312., 16644.,
      15360., 16698., 15408., 16752., 20316., 21882., 20376., 21948., 20436.,
      22014., 20496., 22080., 27921., 30234., 28002., 30324., 28083., 30414.,
      28164., 30504., 28245., 30594., 28326., 30684., 28407., 30774., 28488.,
      30864., 28569., 30954., 28650., 31044., 28731., 31134., 28812., 31224.,
      28893., 31314., 28974., 31404., 29055., 31494., 29136., 31584., 17376.,
      18966., 17424., 19020., 17472., 19074., 17520., 19128., 17568., 19182.,
      17616., 19236., 17664., 19290., 17712., 19344., 23196., 25050., 23256.,
      25116., 23316., 25182., 23376., 25248., 31809., 34554., 31890., 34644.,
      31971., 34734., 32052., 34824., 32133., 34914., 32214., 35004., 32295.,
      35094., 32376., 35184., 32457., 35274., 32538., 35364., 32619., 35454.,
      32700., 35544., 32781., 35634., 32862., 35724., 32943., 35814., 33024.,
      35904., 19680., 21558., 19728., 21612., 19776., 21666., 19824., 21720.,
      19872., 21774., 19920., 21828., 19968., 21882., 20016., 21936., 26076.,
      28218., 26136., 28284., 26196., 28350., 26256., 28416., 35697., 38874.,
      35778., 38964., 35859., 39054., 35940., 39144., 36021., 39234., 36102.,
      39324., 36183., 39414., 36264., 39504., 36345., 39594., 36426., 39684.,
      36507., 39774., 36588., 39864., 36669., 39954., 36750., 40044., 36831.,
      40134., 36912., 40224., 21984., 24150., 22032., 24204., 22080., 24258.,
      22128., 24312., 22176., 24366., 22224., 24420., 22272., 24474., 22320.,
      24528., 9836.,  11072., 9864.,  11104., 9892.,  11136., 9920.,  11168.,
      12836., 14666., 12872., 14708., 12908., 14750., 12944., 14792., 12980.,
      14834., 13016., 14876., 13052., 14918., 13088., 14960., 13124., 15002.,
      13160., 15044., 13196., 15086., 13232., 15128., 13268., 15170., 13304.,
      15212., 13340., 15254., 13376., 15296., 7444.,  8696.,  7464.,  8720.,
      7484.,  8744.,  7504.,  8768.,  7524.,  8792.,  7544.,  8816.,  7564.,
      8840.,  7584.,  8864.,  11180., 12608., 11208., 12640., 11236., 12672.,
      11264., 12704., 14564., 16682., 14600., 16724., 14636., 16766., 14672.,
      16808., 14708., 16850., 14744., 16892., 14780., 16934., 14816., 16976.,
      14852., 17018., 14888., 17060., 14924., 17102., 14960., 17144., 14996.,
      17186., 15032., 17228., 15068., 17270., 15104., 17312., 8404.,  9848.,
      8424.,  9872.,  8444.,  9896.,  8464.,  9920.,  8484.,  9944.,  8504.,
      9968.,  8524.,  9992.,  8544.,  10016.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2480., 2900., 2496., 2920., 2512., 2940., 2528., 2960., 2544., 2980.,
      2560., 3000., 2576., 3020., 2592., 3040., 2608., 3060., 2624., 3080.,
      2640., 3100., 2656., 3120., 2672., 3140., 2688., 3160., 2704., 3180.,
      2720., 3200., 2736., 3220., 2752., 3240., 2768., 3260., 2784., 3280.,
      2800., 3300., 2816., 3320., 2832., 3340., 2848., 3360., 2864., 3380.,
      2880., 3400., 2896., 3420., 2912., 3440., 3248., 3860., 3264., 3880.,
      3280., 3900., 3296., 3920., 3312., 3940., 3328., 3960., 3344., 3980.,
      3360., 4000., 3376., 4020., 3392., 4040., 3408., 4060., 3424., 4080.,
      3440., 4100., 3456., 4120., 3472., 4140., 3488., 4160., 3504., 4180.,
      3520., 4200., 3536., 4220., 3552., 4240., 3568., 4260., 3584., 4280.,
      3600., 4300., 3616., 4320., 3632., 4340., 3648., 4360., 3664., 4380.,
      3680., 4400., 4016., 4820., 4032., 4840., 4048., 4860., 4064., 4880.,
      4080., 4900., 4096., 4920., 4112., 4940., 4128., 4960., 4144., 4980.,
      4160., 5000., 4176., 5020., 4192., 5040., 4208., 5060., 4224., 5080.,
      4240., 5100., 4256., 5120., 4272., 5140., 4288., 5160., 4304., 5180.,
      4320., 5200., 4336., 5220., 4352., 5240., 4368., 5260., 4384., 5280.,
      4400., 5300., 4416., 5320., 4432., 5340., 4448., 5360., 4784., 5780.,
      4800., 5800., 4816., 5820., 4832., 5840., 4848., 5860., 4864., 5880.,
      4880., 5900., 4896., 5920., 4912., 5940., 4928., 5960., 4944., 5980.,
      4960., 6000., 4976., 6020., 4992., 6040., 5008., 6060., 5024., 6080.,
      5040., 6100., 5056., 6120., 5072., 6140., 5088., 6160., 5104., 6180.,
      5120., 6200., 5136., 6220., 5152., 6240., 5168., 6260., 5184., 6280.,
      5200., 6300., 5216., 6320., 5552., 6740., 5568., 6760., 5584., 6780.,
      5600., 6800., 5616., 6820., 5632., 6840., 5648., 6860., 5664., 6880.,
      5680., 6900., 5696., 6920., 5712., 6940., 5728., 6960., 5744., 6980.,
      5760., 7000., 5776., 7020., 5792., 7040., 5808., 7060., 5824., 7080.,
      5840., 7100., 5856., 7120., 5872., 7140., 5888., 7160., 5904., 7180.,
      5920., 7200., 5936., 7220., 5952., 7240., 5968., 7260., 5984., 7280.,
      6320., 7700., 6336., 7720., 6352., 7740., 6368., 7760., 6384., 7780.,
      6400., 7800., 6416., 7820., 6432., 7840., 6448., 7860., 6464., 7880.,
      6480., 7900., 6496., 7920., 6512., 7940., 6528., 7960., 6544., 7980.,
      6560., 8000., 6576., 8020., 6592., 8040., 6608., 8060., 6624., 8080.,
      6640., 8100., 6656., 8120., 6672., 8140., 6688., 8160., 6704., 8180.,
      6720., 8200., 6736., 8220., 6752., 8240., 7088., 8660., 7104., 8680.,
      7120., 8700., 7136., 8720., 7152., 8740., 7168., 8760., 7184., 8780.,
      7200., 8800., 7216., 8820., 7232., 8840., 7248., 8860., 7264., 8880.,
      7280., 8900., 7296., 8920., 7312., 8940., 7328., 8960., 7344., 8980.,
      7360., 9000., 7376., 9020., 7392., 9040., 7408., 9060., 7424., 9080.,
      7440., 9100., 7456., 9120., 7472., 9140., 7488., 9160., 7504., 9180.,
      7520., 9200.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      28468., 29512., 30556., 31600., 28568., 29616., 30664., 31712., 28668.,
      29720., 30772., 31824., 28768., 29824., 30880., 31936., 39178., 40720.,
      42262., 43804., 39316., 40864., 42412., 43960., 39454., 41008., 42562.,
      44116., 39592., 41152., 42712., 44272., 39730., 41296., 42862., 44428.,
      39868., 41440., 43012., 44584., 40006., 41584., 43162., 44740., 40144.,
      41728., 43312., 44896., 40282., 41872., 43462., 45052., 40420., 42016.,
      43612., 45208., 40558., 42160., 43762., 45364., 40696., 42304., 43912.,
      45520., 40834., 42448., 44062., 45676., 40972., 42592., 44212., 45832.,
      41110., 42736., 44362., 45988., 41248., 42880., 44512., 46144., 24628.,
      25688., 26748., 27808., 24712., 25776., 26840., 27904., 24796., 25864.,
      26932., 28000., 24880., 25952., 27024., 28096., 24964., 26040., 27116.,
      28192., 25048., 26128., 27208., 28288., 25132., 26216., 27300., 28384.,
      25216., 26304., 27392., 28480., 33594., 34872., 36150., 37428., 33708.,
      34992., 36276., 37560., 33822., 35112., 36402., 37692., 33936., 35232.,
      36528., 37824., 46185., 48066., 49947., 51828., 46338., 48228., 50118.,
      52008., 46491., 48390., 50289., 52188., 46644., 48552., 50460., 52368.,
      46797., 48714., 50631., 52548., 46950., 48876., 50802., 52728., 47103.,
      49038., 50973., 52908., 47256., 49200., 51144., 53088., 47409., 49362.,
      51315., 53268., 47562., 49524., 51486., 53448., 47715., 49686., 51657.,
      53628., 47868., 49848., 51828., 53808., 48021., 50010., 51999., 53988.,
      48174., 50172., 52170., 54168., 48327., 50334., 52341., 54348., 48480.,
      50496., 52512., 54528., 28842., 30144., 31446., 32748., 28932., 30240.,
      31548., 32856., 29022., 30336., 31650., 32964., 29112., 30432., 31752.,
      33072., 29202., 30528., 31854., 33180., 29292., 30624., 31956., 33288.,
      29382., 30720., 32058., 33396., 29472., 30816., 32160., 33504., 39066.,
      40632., 42198., 43764., 39180., 40752., 42324., 43896., 39294., 40872.,
      42450., 44028., 39408., 40992., 42576., 44160., 53529., 55842., 58155.,
      60468., 53682., 56004., 58326., 60648., 53835., 56166., 58497., 60828.,
      53988., 56328., 58668., 61008., 54141., 56490., 58839., 61188., 54294.,
      56652., 59010., 61368., 54447., 56814., 59181., 61548., 54600., 56976.,
      59352., 61728., 54753., 57138., 59523., 61908., 54906., 57300., 59694.,
      62088., 55059., 57462., 59865., 62268., 55212., 57624., 60036., 62448.,
      55365., 57786., 60207., 62628., 55518., 57948., 60378., 62808., 55671.,
      58110., 60549., 62988., 55824., 58272., 60720., 63168., 33162., 34752.,
      36342., 37932., 33252., 34848., 36444., 38040., 33342., 34944., 36546.,
      38148., 33432., 35040., 36648., 38256., 33522., 35136., 36750., 38364.,
      33612., 35232., 36852., 38472., 33702., 35328., 36954., 38580., 33792.,
      35424., 37056., 38688., 44538., 46392., 48246., 50100., 44652., 46512.,
      48372., 50232., 44766., 46632., 48498., 50364., 44880., 46752., 48624.,
      50496., 60873., 63618., 66363., 69108., 61026., 63780., 66534., 69288.,
      61179., 63942., 66705., 69468., 61332., 64104., 66876., 69648., 61485.,
      64266., 67047., 69828., 61638., 64428., 67218., 70008., 61791., 64590.,
      67389., 70188., 61944., 64752., 67560., 70368., 62097., 64914., 67731.,
      70548., 62250., 65076., 67902., 70728., 62403., 65238., 68073., 70908.,
      62556., 65400., 68244., 71088., 62709., 65562., 68415., 71268., 62862.,
      65724., 68586., 71448., 63015., 65886., 68757., 71628., 63168., 66048.,
      68928., 71808., 37482., 39360., 41238., 43116., 37572., 39456., 41340.,
      43224., 37662., 39552., 41442., 43332., 37752., 39648., 41544., 43440.,
      37842., 39744., 41646., 43548., 37932., 39840., 41748., 43656., 38022.,
      39936., 41850., 43764., 38112., 40032., 41952., 43872., 50010., 52152.,
      54294., 56436., 50124., 52272., 54420., 56568., 50238., 52392., 54546.,
      56700., 50352., 52512., 54672., 56832., 68217., 71394., 74571., 77748.,
      68370., 71556., 74742., 77928., 68523., 71718., 74913., 78108., 68676.,
      71880., 75084., 78288., 68829., 72042., 75255., 78468., 68982., 72204.,
      75426., 78648., 69135., 72366., 75597., 78828., 69288., 72528., 75768.,
      79008., 69441., 72690., 75939., 79188., 69594., 72852., 76110., 79368.,
      69747., 73014., 76281., 79548., 69900., 73176., 76452., 79728., 70053.,
      73338., 76623., 79908., 70206., 73500., 76794., 80088., 70359., 73662.,
      76965., 80268., 70512., 73824., 77136., 80448., 41802., 43968., 46134.,
      48300., 41892., 44064., 46236., 48408., 41982., 44160., 46338., 48516.,
      42072., 44256., 46440., 48624., 42162., 44352., 46542., 48732., 42252.,
      44448., 46644., 48840., 42342., 44544., 46746., 48948., 42432., 44640.,
      46848., 49056., 18436., 19672., 20908., 22144., 18488., 19728., 20968.,
      22208., 18540., 19784., 21028., 22272., 18592., 19840., 21088., 22336.,
      23842., 25672., 27502., 29332., 23908., 25744., 27580., 29416., 23974.,
      25816., 27658., 29500., 24040., 25888., 27736., 29584., 24106., 25960.,
      27814., 29668., 24172., 26032., 27892., 29752., 24238., 26104., 27970.,
      29836., 24304., 26176., 28048., 29920., 24370., 26248., 28126., 30004.,
      24436., 26320., 28204., 30088., 24502., 26392., 28282., 30172., 24568.,
      26464., 28360., 30256., 24634., 26536., 28438., 30340., 24700., 26608.,
      28516., 30424., 24766., 26680., 28594., 30508., 24832., 26752., 28672.,
      30592., 13636., 14888., 16140., 17392., 13672., 14928., 16184., 17440.,
      13708., 14968., 16228., 17488., 13744., 15008., 16272., 17536., 13780.,
      15048., 16316., 17584., 13816., 15088., 16360., 17632., 13852., 15128.,
      16404., 17680., 13888., 15168., 16448., 17728., 20932., 22360., 23788.,
      25216., 20984., 22416., 23848., 25280., 21036., 22472., 23908., 25344.,
      21088., 22528., 23968., 25408., 27010., 29128., 31246., 33364., 27076.,
      29200., 31324., 33448., 27142., 29272., 31402., 33532., 27208., 29344.,
      31480., 33616., 27274., 29416., 31558., 33700., 27340., 29488., 31636.,
      33784., 27406., 29560., 31714., 33868., 27472., 29632., 31792., 33952.,
      27538., 29704., 31870., 34036., 27604., 29776., 31948., 34120., 27670.,
      29848., 32026., 34204., 27736., 29920., 32104., 34288., 27802., 29992.,
      32182., 34372., 27868., 30064., 32260., 34456., 27934., 30136., 32338.,
      34540., 28000., 30208., 32416., 34624., 15364., 16808., 18252., 19696.,
      15400., 16848., 18296., 19744., 15436., 16888., 18340., 19792., 15472.,
      16928., 18384., 19840., 15508., 16968., 18428., 19888., 15544., 17008.,
      18472., 19936., 15580., 17048., 18516., 19984., 15616., 17088., 18560.,
      20032.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4540.,  4960.,  5380.,  5800.,  4568.,  4992.,  5416.,  5840.,  4596.,
      5024.,  5452.,  5880.,  4624.,  5056.,  5488.,  5920.,  4652.,  5088.,
      5524.,  5960.,  4680.,  5120.,  5560.,  6000.,  4708.,  5152.,  5596.,
      6040.,  4736.,  5184.,  5632.,  6080.,  4764.,  5216.,  5668.,  6120.,
      4792.,  5248.,  5704.,  6160.,  4820.,  5280.,  5740.,  6200.,  4848.,
      5312.,  5776.,  6240.,  4876.,  5344.,  5812.,  6280.,  4904.,  5376.,
      5848.,  6320.,  4932.,  5408.,  5884.,  6360.,  4960.,  5440.,  5920.,
      6400.,  4988.,  5472.,  5956.,  6440.,  5016.,  5504.,  5992.,  6480.,
      5044.,  5536.,  6028.,  6520.,  5072.,  5568.,  6064.,  6560.,  5100.,
      5600.,  6100.,  6600.,  5128.,  5632.,  6136.,  6640.,  5156.,  5664.,
      6172.,  6680.,  5184.,  5696.,  6208.,  6720.,  5212.,  5728.,  6244.,
      6760.,  5240.,  5760.,  6280.,  6800.,  5268.,  5792.,  6316.,  6840.,
      5296.,  5824.,  6352.,  6880.,  5884.,  6496.,  7108.,  7720.,  5912.,
      6528.,  7144.,  7760.,  5940.,  6560.,  7180.,  7800.,  5968.,  6592.,
      7216.,  7840.,  5996.,  6624.,  7252.,  7880.,  6024.,  6656.,  7288.,
      7920.,  6052.,  6688.,  7324.,  7960.,  6080.,  6720.,  7360.,  8000.,
      6108.,  6752.,  7396.,  8040.,  6136.,  6784.,  7432.,  8080.,  6164.,
      6816.,  7468.,  8120.,  6192.,  6848.,  7504.,  8160.,  6220.,  6880.,
      7540.,  8200.,  6248.,  6912.,  7576.,  8240.,  6276.,  6944.,  7612.,
      8280.,  6304.,  6976.,  7648.,  8320.,  6332.,  7008.,  7684.,  8360.,
      6360.,  7040.,  7720.,  8400.,  6388.,  7072.,  7756.,  8440.,  6416.,
      7104.,  7792.,  8480.,  6444.,  7136.,  7828.,  8520.,  6472.,  7168.,
      7864.,  8560.,  6500.,  7200.,  7900.,  8600.,  6528.,  7232.,  7936.,
      8640.,  6556.,  7264.,  7972.,  8680.,  6584.,  7296.,  8008.,  8720.,
      6612.,  7328.,  8044.,  8760.,  6640.,  7360.,  8080.,  8800.,  7228.,
      8032.,  8836.,  9640.,  7256.,  8064.,  8872.,  9680.,  7284.,  8096.,
      8908.,  9720.,  7312.,  8128.,  8944.,  9760.,  7340.,  8160.,  8980.,
      9800.,  7368.,  8192.,  9016.,  9840.,  7396.,  8224.,  9052.,  9880.,
      7424.,  8256.,  9088.,  9920.,  7452.,  8288.,  9124.,  9960.,  7480.,
      8320.,  9160.,  10000., 7508.,  8352.,  9196.,  10040., 7536.,  8384.,
      9232.,  10080., 7564.,  8416.,  9268.,  10120., 7592.,  8448.,  9304.,
      10160., 7620.,  8480.,  9340.,  10200., 7648.,  8512.,  9376.,  10240.,
      7676.,  8544.,  9412.,  10280., 7704.,  8576.,  9448.,  10320., 7732.,
      8608.,  9484.,  10360., 7760.,  8640.,  9520.,  10400., 7788.,  8672.,
      9556.,  10440., 7816.,  8704.,  9592.,  10480., 7844.,  8736.,  9628.,
      10520., 7872.,  8768.,  9664.,  10560., 7900.,  8800.,  9700.,  10600.,
      7928.,  8832.,  9736.,  10640., 7956.,  8864.,  9772.,  10680., 7984.,
      8896.,  9808.,  10720., 8572.,  9568.,  10564., 11560., 8600.,  9600.,
      10600., 11600., 8628.,  9632.,  10636., 11640., 8656.,  9664.,  10672.,
      11680., 8684.,  9696.,  10708., 11720., 8712.,  9728.,  10744., 11760.,
      8740.,  9760.,  10780., 11800., 8768.,  9792.,  10816., 11840., 8796.,
      9824.,  10852., 11880., 8824.,  9856.,  10888., 11920., 8852.,  9888.,
      10924., 11960., 8880.,  9920.,  10960., 12000., 8908.,  9952.,  10996.,
      12040., 8936.,  9984.,  11032., 12080., 8964.,  10016., 11068., 12120.,
      8992.,  10048., 11104., 12160., 9020.,  10080., 11140., 12200., 9048.,
      10112., 11176., 12240., 9076.,  10144., 11212., 12280., 9104.,  10176.,
      11248., 12320., 9132.,  10208., 11284., 12360., 9160.,  10240., 11320.,
      12400., 9188.,  10272., 11356., 12440., 9216.,  10304., 11392., 12480.,
      9244.,  10336., 11428., 12520., 9272.,  10368., 11464., 12560., 9300.,
      10400., 11500., 12600., 9328.,  10432., 11536., 12640., 9916.,  11104.,
      12292., 13480., 9944.,  11136., 12328., 13520., 9972.,  11168., 12364.,
      13560., 10000., 11200., 12400., 13600., 10028., 11232., 12436., 13640.,
      10056., 11264., 12472., 13680., 10084., 11296., 12508., 13720., 10112.,
      11328., 12544., 13760., 10140., 11360., 12580., 13800., 10168., 11392.,
      12616., 13840., 10196., 11424., 12652., 13880., 10224., 11456., 12688.,
      13920., 10252., 11488., 12724., 13960., 10280., 11520., 12760., 14000.,
      10308., 11552., 12796., 14040., 10336., 11584., 12832., 14080., 10364.,
      11616., 12868., 14120., 10392., 11648., 12904., 14160., 10420., 11680.,
      12940., 14200., 10448., 11712., 12976., 14240., 10476., 11744., 13012.,
      14280., 10504., 11776., 13048., 14320., 10532., 11808., 13084., 14360.,
      10560., 11840., 13120., 14400., 10588., 11872., 13156., 14440., 10616.,
      11904., 13192., 14480., 10644., 11936., 13228., 14520., 10672., 11968.,
      13264., 14560., 11260., 12640., 14020., 15400., 11288., 12672., 14056.,
      15440., 11316., 12704., 14092., 15480., 11344., 12736., 14128., 15520.,
      11372., 12768., 14164., 15560., 11400., 12800., 14200., 15600., 11428.,
      12832., 14236., 15640., 11456., 12864., 14272., 15680., 11484., 12896.,
      14308., 15720., 11512., 12928., 14344., 15760., 11540., 12960., 14380.,
      15800., 11568., 12992., 14416., 15840., 11596., 13024., 14452., 15880.,
      11624., 13056., 14488., 15920., 11652., 13088., 14524., 15960., 11680.,
      13120., 14560., 16000., 11708., 13152., 14596., 16040., 11736., 13184.,
      14632., 16080., 11764., 13216., 14668., 16120., 11792., 13248., 14704.,
      16160., 11820., 13280., 14740., 16200., 11848., 13312., 14776., 16240.,
      11876., 13344., 14812., 16280., 11904., 13376., 14848., 16320., 11932.,
      13408., 14884., 16360., 11960., 13440., 14920., 16400., 11988., 13472.,
      14956., 16440., 12016., 13504., 14992., 16480., 12604., 14176., 15748.,
      17320., 12632., 14208., 15784., 17360., 12660., 14240., 15820., 17400.,
      12688., 14272., 15856., 17440., 12716., 14304., 15892., 17480., 12744.,
      14336., 15928., 17520., 12772., 14368., 15964., 17560., 12800., 14400.,
      16000., 17600., 12828., 14432., 16036., 17640., 12856., 14464., 16072.,
      17680., 12884., 14496., 16108., 17720., 12912., 14528., 16144., 17760.,
      12940., 14560., 16180., 17800., 12968., 14592., 16216., 17840., 12996.,
      14624., 16252., 17880., 13024., 14656., 16288., 17920., 13052., 14688.,
      16324., 17960., 13080., 14720., 16360., 18000., 13108., 14752., 16396.,
      18040., 13136., 14784., 16432., 18080., 13164., 14816., 16468., 18120.,
      13192., 14848., 16504., 18160., 13220., 14880., 16540., 18200., 13248.,
      14912., 16576., 18240., 13276., 14944., 16612., 18280., 13304., 14976.,
      16648., 18320., 13332., 15008., 16684., 18360., 13360., 15040., 16720.,
      18400.};
  const std::array<int, 4> in_shape = {{1, 12, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4510.,  4564.,  5724., 5792., 4048., 4096., 4144., 5337., 5400., 6766.,
      6844.,  4770.,  4824., 4878., 6219., 6282., 7858., 7936., 5526., 5580.,
      5634.,  7101.,  7164., 8950., 9028., 6282., 6336., 6390., 7983., 8046.,
      10042., 10120., 7038., 7092., 7146., 3082., 3112., 3764., 3800., 2536.,
      2560.,  2584.,  3502., 3532., 4268., 4304., 2872., 2896., 2920.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      426.,  436.,  446.,  456.,  466.,  476.,  486.,  566.,  576.,  586.,
      596.,  606.,  616.,  626.,  706.,  716.,  726.,  736.,  746.,  756.,
      766.,  846.,  856.,  866.,  876.,  886.,  896.,  906.,  986.,  996.,
      1006., 1016., 1026., 1036., 1046., 1126., 1136., 1146., 1156., 1166.,
      1176., 1186., 1266., 1276., 1286., 1296., 1306., 1316., 1326.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8558.,  9020.,  8660.,  9128.,  10832., 11448., 10960., 11584., 7634.,
      8096.,  7724.,  8192.,  7814.,  8288.,  10107., 10674., 10224., 10800.,
      12776., 13532., 12920., 13688., 8973.,  9540.,  9072.,  9648.,  9171.,
      9756.,  11745., 12438., 11862., 12564., 14792., 15716., 14936., 15872.,
      10359., 11052., 10458., 11160., 10557., 11268., 13383., 14202., 13500.,
      14328., 16808., 17900., 16952., 18056., 11745., 12564., 11844., 12672.,
      11943., 12780., 15021., 15966., 15138., 16092., 18824., 20084., 18968.,
      20240., 13131., 14076., 13230., 14184., 13329., 14292., 5618.,  6164.,
      5672.,  6224.,  6800.,  7528.,  6864.,  7600.,  4526.,  5072.,  4568.,
      5120.,  4610.,  5168.,  6374.,  7004.,  6428.,  7064.,  7696.,  8536.,
      7760.,  8608.,  5114.,  5744.,  5156.,  5792.,  5198.,  5840.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      728.,  852.,  744.,  872.,  760.,  892.,  776.,  912.,  792.,  932.,
      808.,  952.,  824.,  972.,  952.,  1132., 968.,  1152., 984.,  1172.,
      1000., 1192., 1016., 1212., 1032., 1232., 1048., 1252., 1176., 1412.,
      1192., 1432., 1208., 1452., 1224., 1472., 1240., 1492., 1256., 1512.,
      1272., 1532., 1400., 1692., 1416., 1712., 1432., 1732., 1448., 1752.,
      1464., 1772., 1480., 1792., 1496., 1812., 1624., 1972., 1640., 1992.,
      1656., 2012., 1672., 2032., 1688., 2052., 1704., 2072., 1720., 2092.,
      1848., 2252., 1864., 2272., 1880., 2292., 1896., 2312., 1912., 2332.,
      1928., 2352., 1944., 2372., 2072., 2532., 2088., 2552., 2104., 2572.,
      2120., 2592., 2136., 2612., 2152., 2632., 2168., 2652.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16654., 17116., 17578., 18040., 16852., 17320., 17788., 18256., 21048.,
      21664., 22280., 22896., 21296., 21920., 22544., 23168., 14806., 15268.,
      15730., 16192., 14980., 15448., 15916., 16384., 15154., 15628., 16102.,
      16576., 19647., 20214., 20781., 21348., 19872., 20448., 21024., 21600.,
      24796., 25552., 26308., 27064., 25072., 25840., 26608., 27376., 17379.,
      17946., 18513., 19080., 17568., 18144., 18720., 19296., 17757., 18342.,
      18927., 19512., 22797., 23490., 24183., 24876., 23022., 23724., 24426.,
      25128., 28660., 29584., 30508., 31432., 28936., 29872., 30808., 31744.,
      20025., 20718., 21411., 22104., 20214., 20916., 21618., 22320., 20403.,
      21114., 21825., 22536., 25947., 26766., 27585., 28404., 26172., 27000.,
      27828., 28656., 32524., 33616., 34708., 35800., 32800., 33904., 35008.,
      36112., 22671., 23490., 24309., 25128., 22860., 23688., 24516., 25344.,
      23049., 23886., 24723., 25560., 29097., 30042., 30987., 31932., 29322.,
      30276., 31230., 32184., 36388., 37648., 38908., 40168., 36664., 37936.,
      39208., 40480., 25317., 26262., 27207., 28152., 25506., 26460., 27414.,
      28368., 25695., 26658., 27621., 28584., 10690., 11236., 11782., 12328.,
      10792., 11344., 11896., 12448., 12872., 13600., 14328., 15056., 12992.,
      13728., 14464., 15200., 8506.,  9052.,  9598.,  10144., 8584.,  9136.,
      9688.,  10240., 8662.,  9220.,  9778.,  10336., 12118., 12748., 13378.,
      14008., 12220., 12856., 13492., 14128., 14552., 15392., 16232., 17072.,
      14672., 15520., 16368., 17216., 9598.,  10228., 10858., 11488., 9676.,
      10312., 10948., 11584., 9754.,  10396., 11038., 11680.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1332., 1456., 1580., 1704., 1360., 1488., 1616., 1744., 1388., 1520.,
      1652., 1784., 1416., 1552., 1688., 1824., 1444., 1584., 1724., 1864.,
      1472., 1616., 1760., 1904., 1500., 1648., 1796., 1944., 1724., 1904.,
      2084., 2264., 1752., 1936., 2120., 2304., 1780., 1968., 2156., 2344.,
      1808., 2000., 2192., 2384., 1836., 2032., 2228., 2424., 1864., 2064.,
      2264., 2464., 1892., 2096., 2300., 2504., 2116., 2352., 2588., 2824.,
      2144., 2384., 2624., 2864., 2172., 2416., 2660., 2904., 2200., 2448.,
      2696., 2944., 2228., 2480., 2732., 2984., 2256., 2512., 2768., 3024.,
      2284., 2544., 2804., 3064., 2508., 2800., 3092., 3384., 2536., 2832.,
      3128., 3424., 2564., 2864., 3164., 3464., 2592., 2896., 3200., 3504.,
      2620., 2928., 3236., 3544., 2648., 2960., 3272., 3584., 2676., 2992.,
      3308., 3624., 2900., 3248., 3596., 3944., 2928., 3280., 3632., 3984.,
      2956., 3312., 3668., 4024., 2984., 3344., 3704., 4064., 3012., 3376.,
      3740., 4104., 3040., 3408., 3776., 4144., 3068., 3440., 3812., 4184.,
      3292., 3696., 4100., 4504., 3320., 3728., 4136., 4544., 3348., 3760.,
      4172., 4584., 3376., 3792., 4208., 4624., 3404., 3824., 4244., 4664.,
      3432., 3856., 4280., 4704., 3460., 3888., 4316., 4744., 3684., 4144.,
      4604., 5064., 3712., 4176., 4640., 5104., 3740., 4208., 4676., 5144.,
      3768., 4240., 4712., 5184., 3796., 4272., 4748., 5224., 3824., 4304.,
      4784., 5264., 3852., 4336., 4820., 5304.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8966.,  9020.,  9074.,  9128.,  11380., 11448., 11516., 11584., 8048.,
      8096.,  8144.,  8192.,  8240.,  8288.,  10611., 10674., 10737., 10800.,
      13454., 13532., 13610., 13688., 9486.,  9540.,  9594.,  9648.,  9702.,
      9756.,  12375., 12438., 12501., 12564., 15638., 15716., 15794., 15872.,
      10998., 11052., 11106., 11160., 11214., 11268., 14139., 14202., 14265.,
      14328., 17822., 17900., 17978., 18056., 12510., 12564., 12618., 12672.,
      12726., 12780., 15903., 15966., 16029., 16092., 20006., 20084., 20162.,
      20240., 14022., 14076., 14130., 14184., 14238., 14292., 6134.,  6164.,
      6194.,  6224.,  7492.,  7528.,  7564.,  7600.,  5048.,  5072.,  5096.,
      5120.,  5144.,  5168.,  6974.,  7004.,  7034.,  7064.,  8500.,  8536.,
      8572.,  8608.,  5720.,  5744.,  5768.,  5792.,  5816.,  5840.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      842.,  852.,  862.,  872.,  882.,  892.,  902.,  912.,  922.,  932.,
      942.,  952.,  962.,  972.,  1122., 1132., 1142., 1152., 1162., 1172.,
      1182., 1192., 1202., 1212., 1222., 1232., 1242., 1252., 1402., 1412.,
      1422., 1432., 1442., 1452., 1462., 1472., 1482., 1492., 1502., 1512.,
      1522., 1532., 1682., 1692., 1702., 1712., 1722., 1732., 1742., 1752.,
      1762., 1772., 1782., 1792., 1802., 1812., 1962., 1972., 1982., 1992.,
      2002., 2012., 2022., 2032., 2042., 2052., 2062., 2072., 2082., 2092.,
      2242., 2252., 2262., 2272., 2282., 2292., 2302., 2312., 2322., 2332.,
      2342., 2352., 2362., 2372., 2522., 2532., 2542., 2552., 2562., 2572.,
      2582., 2592., 2602., 2612., 2622., 2632., 2642., 2652.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17014., 17932., 17116., 18040., 17218., 18148., 17320., 18256., 21536.,
      22760., 21664., 22896., 21792., 23032., 21920., 23168., 15178., 16096.,
      15268., 16192., 15358., 16288., 15448., 16384., 15538., 16480., 15628.,
      16576., 20097., 21222., 20214., 21348., 20331., 21474., 20448., 21600.,
      25408., 26908., 25552., 27064., 25696., 27220., 25840., 27376., 17847.,
      18972., 17946., 19080., 18045., 19188., 18144., 19296., 18243., 19404.,
      18342., 19512., 23373., 24750., 23490., 24876., 23607., 25002., 23724.,
      25128., 29440., 31276., 29584., 31432., 29728., 31588., 29872., 31744.,
      20619., 21996., 20718., 22104., 20817., 22212., 20916., 22320., 21015.,
      22428., 21114., 22536., 26649., 28278., 26766., 28404., 26883., 28530.,
      27000., 28656., 33472., 35644., 33616., 35800., 33760., 35956., 33904.,
      36112., 23391., 25020., 23490., 25128., 23589., 25236., 23688., 25344.,
      23787., 25452., 23886., 25560., 29925., 31806., 30042., 31932., 30159.,
      32058., 30276., 32184., 37504., 40012., 37648., 40168., 37792., 40324.,
      37936., 40480., 26163., 28044., 26262., 28152., 26361., 28260., 26460.,
      28368., 26559., 28476., 26658., 28584., 11182., 12268., 11236., 12328.,
      11290., 12388., 11344., 12448., 13536., 14984., 13600., 15056., 13664.,
      15128., 13728., 15200., 9010.,  10096., 9052.,  10144., 9094.,  10192.,
      9136.,  10240., 9178.,  10288., 9220.,  10336., 12694., 13948., 12748.,
      14008., 12802., 14068., 12856., 14128., 15328., 17000., 15392., 17072.,
      15456., 17144., 15520., 17216., 10186., 11440., 10228., 11488., 10270.,
      11536., 10312., 11584., 10354., 11632., 10396., 11680.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1440., 1684., 1456., 1704., 1472., 1724., 1488., 1744., 1504., 1764.,
      1520., 1784., 1536., 1804., 1552., 1824., 1568., 1844., 1584., 1864.,
      1600., 1884., 1616., 1904., 1632., 1924., 1648., 1944., 1888., 2244.,
      1904., 2264., 1920., 2284., 1936., 2304., 1952., 2324., 1968., 2344.,
      1984., 2364., 2000., 2384., 2016., 2404., 2032., 2424., 2048., 2444.,
      2064., 2464., 2080., 2484., 2096., 2504., 2336., 2804., 2352., 2824.,
      2368., 2844., 2384., 2864., 2400., 2884., 2416., 2904., 2432., 2924.,
      2448., 2944., 2464., 2964., 2480., 2984., 2496., 3004., 2512., 3024.,
      2528., 3044., 2544., 3064., 2784., 3364., 2800., 3384., 2816., 3404.,
      2832., 3424., 2848., 3444., 2864., 3464., 2880., 3484., 2896., 3504.,
      2912., 3524., 2928., 3544., 2944., 3564., 2960., 3584., 2976., 3604.,
      2992., 3624., 3232., 3924., 3248., 3944., 3264., 3964., 3280., 3984.,
      3296., 4004., 3312., 4024., 3328., 4044., 3344., 4064., 3360., 4084.,
      3376., 4104., 3392., 4124., 3408., 4144., 3424., 4164., 3440., 4184.,
      3680., 4484., 3696., 4504., 3712., 4524., 3728., 4544., 3744., 4564.,
      3760., 4584., 3776., 4604., 3792., 4624., 3808., 4644., 3824., 4664.,
      3840., 4684., 3856., 4704., 3872., 4724., 3888., 4744., 4128., 5044.,
      4144., 5064., 4160., 5084., 4176., 5104., 4192., 5124., 4208., 5144.,
      4224., 5164., 4240., 5184., 4256., 5204., 4272., 5224., 4288., 5244.,
      4304., 5264., 4320., 5284., 4336., 5304.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33110., 34028., 34946., 35864., 33308., 34232., 35156., 36080., 33506.,
      34436., 35366., 36296., 33704., 34640., 35576., 36512., 41848., 43072.,
      44296., 45520., 42096., 43328., 44560., 45792., 42344., 43584., 44824.,
      46064., 42592., 43840., 45088., 46336., 29438., 30356., 31274., 32192.,
      29612., 30536., 31460., 32384., 29786., 30716., 31646., 32576., 29960.,
      30896., 31832., 32768., 30134., 31076., 32018., 32960., 30308., 31256.,
      32204., 33152., 39069., 40194., 41319., 42444., 39294., 40428., 41562.,
      42696., 39519., 40662., 41805., 42948., 39744., 40896., 42048., 43200.,
      49316., 50816., 52316., 53816., 49592., 51104., 52616., 54128., 49868.,
      51392., 52916., 54440., 50144., 51680., 53216., 54752., 34569., 35694.,
      36819., 37944., 34758., 35892., 37026., 38160., 34947., 36090., 37233.,
      38376., 35136., 36288., 37440., 38592., 35325., 36486., 37647., 38808.,
      35514., 36684., 37854., 39024., 45369., 46746., 48123., 49500., 45594.,
      46980., 48366., 49752., 45819., 47214., 48609., 50004., 46044., 47448.,
      48852., 50256., 57044., 58880., 60716., 62552., 57320., 59168., 61016.,
      62864., 57596., 59456., 61316., 63176., 57872., 59744., 61616., 63488.,
      39861., 41238., 42615., 43992., 40050., 41436., 42822., 44208., 40239.,
      41634., 43029., 44424., 40428., 41832., 43236., 44640., 40617., 42030.,
      43443., 44856., 40806., 42228., 43650., 45072., 51669., 53298., 54927.,
      56556., 51894., 53532., 55170., 56808., 52119., 53766., 55413., 57060.,
      52344., 54000., 55656., 57312., 64772., 66944., 69116., 71288., 65048.,
      67232., 69416., 71600., 65324., 67520., 69716., 71912., 65600., 67808.,
      70016., 72224., 45153., 46782., 48411., 50040., 45342., 46980., 48618.,
      50256., 45531., 47178., 48825., 50472., 45720., 47376., 49032., 50688.,
      45909., 47574., 49239., 50904., 46098., 47772., 49446., 51120., 57969.,
      59850., 61731., 63612., 58194., 60084., 61974., 63864., 58419., 60318.,
      62217., 64116., 58644., 60552., 62460., 64368., 72500., 75008., 77516.,
      80024., 72776., 75296., 77816., 80336., 73052., 75584., 78116., 80648.,
      73328., 75872., 78416., 80960., 50445., 52326., 54207., 56088., 50634.,
      52524., 54414., 56304., 50823., 52722., 54621., 56520., 51012., 52920.,
      54828., 56736., 51201., 53118., 55035., 56952., 51390., 53316., 55242.,
      57168., 21278., 22364., 23450., 24536., 21380., 22472., 23564., 24656.,
      21482., 22580., 23678., 24776., 21584., 22688., 23792., 24896., 25624.,
      27072., 28520., 29968., 25744., 27200., 28656., 30112., 25864., 27328.,
      28792., 30256., 25984., 27456., 28928., 30400., 16934., 18020., 19106.,
      20192., 17012., 18104., 19196., 20288., 17090., 18188., 19286., 20384.,
      17168., 18272., 19376., 20480., 17246., 18356., 19466., 20576., 17324.,
      18440., 19556., 20672., 24134., 25388., 26642., 27896., 24236., 25496.,
      26756., 28016., 24338., 25604., 26870., 28136., 24440., 25712., 26984.,
      28256., 28984., 30656., 32328., 34000., 29104., 30784., 32464., 34144.,
      29224., 30912., 32600., 34288., 29344., 31040., 32736., 34432., 19118.,
      20372., 21626., 22880., 19196., 20456., 21716., 22976., 19274., 20540.,
      21806., 23072., 19352., 20624., 21896., 23168., 19430., 20708., 21986.,
      23264., 19508., 20792., 22076., 23360.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2636., 2880.,  3124., 3368.,  2664., 2912.,  3160., 3408.,  2692., 2944.,
      3196., 3448.,  2720., 2976.,  3232., 3488.,  2748., 3008.,  3268., 3528.,
      2776., 3040.,  3304., 3568.,  2804., 3072.,  3340., 3608.,  2832., 3104.,
      3376., 3648.,  2860., 3136.,  3412., 3688.,  2888., 3168.,  3448., 3728.,
      2916., 3200.,  3484., 3768.,  2944., 3232.,  3520., 3808.,  2972., 3264.,
      3556., 3848.,  3000., 3296.,  3592., 3888.,  3420., 3776.,  4132., 4488.,
      3448., 3808.,  4168., 4528.,  3476., 3840.,  4204., 4568.,  3504., 3872.,
      4240., 4608.,  3532., 3904.,  4276., 4648.,  3560., 3936.,  4312., 4688.,
      3588., 3968.,  4348., 4728.,  3616., 4000.,  4384., 4768.,  3644., 4032.,
      4420., 4808.,  3672., 4064.,  4456., 4848.,  3700., 4096.,  4492., 4888.,
      3728., 4128.,  4528., 4928.,  3756., 4160.,  4564., 4968.,  3784., 4192.,
      4600., 5008.,  4204., 4672.,  5140., 5608.,  4232., 4704.,  5176., 5648.,
      4260., 4736.,  5212., 5688.,  4288., 4768.,  5248., 5728.,  4316., 4800.,
      5284., 5768.,  4344., 4832.,  5320., 5808.,  4372., 4864.,  5356., 5848.,
      4400., 4896.,  5392., 5888.,  4428., 4928.,  5428., 5928.,  4456., 4960.,
      5464., 5968.,  4484., 4992.,  5500., 6008.,  4512., 5024.,  5536., 6048.,
      4540., 5056.,  5572., 6088.,  4568., 5088.,  5608., 6128.,  4988., 5568.,
      6148., 6728.,  5016., 5600.,  6184., 6768.,  5044., 5632.,  6220., 6808.,
      5072., 5664.,  6256., 6848.,  5100., 5696.,  6292., 6888.,  5128., 5728.,
      6328., 6928.,  5156., 5760.,  6364., 6968.,  5184., 5792.,  6400., 7008.,
      5212., 5824.,  6436., 7048.,  5240., 5856.,  6472., 7088.,  5268., 5888.,
      6508., 7128.,  5296., 5920.,  6544., 7168.,  5324., 5952.,  6580., 7208.,
      5352., 5984.,  6616., 7248.,  5772., 6464.,  7156., 7848.,  5800., 6496.,
      7192., 7888.,  5828., 6528.,  7228., 7928.,  5856., 6560.,  7264., 7968.,
      5884., 6592.,  7300., 8008.,  5912., 6624.,  7336., 8048.,  5940., 6656.,
      7372., 8088.,  5968., 6688.,  7408., 8128.,  5996., 6720.,  7444., 8168.,
      6024., 6752.,  7480., 8208.,  6052., 6784.,  7516., 8248.,  6080., 6816.,
      7552., 8288.,  6108., 6848.,  7588., 8328.,  6136., 6880.,  7624., 8368.,
      6556., 7360.,  8164., 8968.,  6584., 7392.,  8200., 9008.,  6612., 7424.,
      8236., 9048.,  6640., 7456.,  8272., 9088.,  6668., 7488.,  8308., 9128.,
      6696., 7520.,  8344., 9168.,  6724., 7552.,  8380., 9208.,  6752., 7584.,
      8416., 9248.,  6780., 7616.,  8452., 9288.,  6808., 7648.,  8488., 9328.,
      6836., 7680.,  8524., 9368.,  6864., 7712.,  8560., 9408.,  6892., 7744.,
      8596., 9448.,  6920., 7776.,  8632., 9488.,  7340., 8256.,  9172., 10088.,
      7368., 8288.,  9208., 10128., 7396., 8320.,  9244., 10168., 7424., 8352.,
      9280., 10208., 7452., 8384.,  9316., 10248., 7480., 8416.,  9352., 10288.,
      7508., 8448.,  9388., 10328., 7536., 8480.,  9424., 10368., 7564., 8512.,
      9460., 10408., 7592., 8544.,  9496., 10448., 7620., 8576.,  9532., 10488.,
      7648., 8608.,  9568., 10528., 7676., 8640.,  9604., 10568., 7704., 8672.,
      9640., 10608.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17878., 17932., 17986., 18040., 18094., 18148., 18202., 18256., 22692.,
      22760., 22828., 22896., 22964., 23032., 23100., 23168., 16048., 16096.,
      16144., 16192., 16240., 16288., 16336., 16384., 16432., 16480., 16528.,
      16576., 21159., 21222., 21285., 21348., 21411., 21474., 21537., 21600.,
      26830., 26908., 26986., 27064., 27142., 27220., 27298., 27376., 18918.,
      18972., 19026., 19080., 19134., 19188., 19242., 19296., 19350., 19404.,
      19458., 19512., 24687., 24750., 24813., 24876., 24939., 25002., 25065.,
      25128., 31198., 31276., 31354., 31432., 31510., 31588., 31666., 31744.,
      21942., 21996., 22050., 22104., 22158., 22212., 22266., 22320., 22374.,
      22428., 22482., 22536., 28215., 28278., 28341., 28404., 28467., 28530.,
      28593., 28656., 35566., 35644., 35722., 35800., 35878., 35956., 36034.,
      36112., 24966., 25020., 25074., 25128., 25182., 25236., 25290., 25344.,
      25398., 25452., 25506., 25560., 31743., 31806., 31869., 31932., 31995.,
      32058., 32121., 32184., 39934., 40012., 40090., 40168., 40246., 40324.,
      40402., 40480., 27990., 28044., 28098., 28152., 28206., 28260., 28314.,
      28368., 28422., 28476., 28530., 28584., 12238., 12268., 12298., 12328.,
      12358., 12388., 12418., 12448., 14948., 14984., 15020., 15056., 15092.,
      15128., 15164., 15200., 10072., 10096., 10120., 10144., 10168., 10192.,
      10216., 10240., 10264., 10288., 10312., 10336., 13918., 13948., 13978.,
      14008., 14038., 14068., 14098., 14128., 16964., 17000., 17036., 17072.,
      17108., 17144., 17180., 17216., 11416., 11440., 11464., 11488., 11512.,
      11536., 11560., 11584., 11608., 11632., 11656., 11680.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1674., 1684., 1694., 1704., 1714., 1724., 1734., 1744., 1754., 1764.,
      1774., 1784., 1794., 1804., 1814., 1824., 1834., 1844., 1854., 1864.,
      1874., 1884., 1894., 1904., 1914., 1924., 1934., 1944., 2234., 2244.,
      2254., 2264., 2274., 2284., 2294., 2304., 2314., 2324., 2334., 2344.,
      2354., 2364., 2374., 2384., 2394., 2404., 2414., 2424., 2434., 2444.,
      2454., 2464., 2474., 2484., 2494., 2504., 2794., 2804., 2814., 2824.,
      2834., 2844., 2854., 2864., 2874., 2884., 2894., 2904., 2914., 2924.,
      2934., 2944., 2954., 2964., 2974., 2984., 2994., 3004., 3014., 3024.,
      3034., 3044., 3054., 3064., 3354., 3364., 3374., 3384., 3394., 3404.,
      3414., 3424., 3434., 3444., 3454., 3464., 3474., 3484., 3494., 3504.,
      3514., 3524., 3534., 3544., 3554., 3564., 3574., 3584., 3594., 3604.,
      3614., 3624., 3914., 3924., 3934., 3944., 3954., 3964., 3974., 3984.,
      3994., 4004., 4014., 4024., 4034., 4044., 4054., 4064., 4074., 4084.,
      4094., 4104., 4114., 4124., 4134., 4144., 4154., 4164., 4174., 4184.,
      4474., 4484., 4494., 4504., 4514., 4524., 4534., 4544., 4554., 4564.,
      4574., 4584., 4594., 4604., 4614., 4624., 4634., 4644., 4654., 4664.,
      4674., 4684., 4694., 4704., 4714., 4724., 4734., 4744., 5034., 5044.,
      5054., 5064., 5074., 5084., 5094., 5104., 5114., 5124., 5134., 5144.,
      5154., 5164., 5174., 5184., 5194., 5204., 5214., 5224., 5234., 5244.,
      5254., 5264., 5274., 5284., 5294., 5304.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33926., 35756., 34028., 35864., 34130., 35972., 34232., 36080., 34334.,
      36188., 34436., 36296., 34538., 36404., 34640., 36512., 42944., 45384.,
      43072., 45520., 43200., 45656., 43328., 45792., 43456., 45928., 43584.,
      46064., 43712., 46200., 43840., 46336., 30266., 32096., 30356., 32192.,
      30446., 32288., 30536., 32384., 30626., 32480., 30716., 32576., 30806.,
      32672., 30896., 32768., 30986., 32864., 31076., 32960., 31166., 33056.,
      31256., 33152., 40077., 42318., 40194., 42444., 40311., 42570., 40428.,
      42696., 40545., 42822., 40662., 42948., 40779., 43074., 40896., 43200.,
      50672., 53660., 50816., 53816., 50960., 53972., 51104., 54128., 51248.,
      54284., 51392., 54440., 51536., 54596., 51680., 54752., 35595., 37836.,
      35694., 37944., 35793., 38052., 35892., 38160., 35991., 38268., 36090.,
      38376., 36189., 38484., 36288., 38592., 36387., 38700., 36486., 38808.,
      36585., 38916., 36684., 39024., 46629., 49374., 46746., 49500., 46863.,
      49626., 46980., 49752., 47097., 49878., 47214., 50004., 47331., 50130.,
      47448., 50256., 58736., 62396., 58880., 62552., 59024., 62708., 59168.,
      62864., 59312., 63020., 59456., 63176., 59600., 63332., 59744., 63488.,
      41139., 43884., 41238., 43992., 41337., 44100., 41436., 44208., 41535.,
      44316., 41634., 44424., 41733., 44532., 41832., 44640., 41931., 44748.,
      42030., 44856., 42129., 44964., 42228., 45072., 53181., 56430., 53298.,
      56556., 53415., 56682., 53532., 56808., 53649., 56934., 53766., 57060.,
      53883., 57186., 54000., 57312., 66800., 71132., 66944., 71288., 67088.,
      71444., 67232., 71600., 67376., 71756., 67520., 71912., 67664., 72068.,
      67808., 72224., 46683., 49932., 46782., 50040., 46881., 50148., 46980.,
      50256., 47079., 50364., 47178., 50472., 47277., 50580., 47376., 50688.,
      47475., 50796., 47574., 50904., 47673., 51012., 47772., 51120., 59733.,
      63486., 59850., 63612., 59967., 63738., 60084., 63864., 60201., 63990.,
      60318., 64116., 60435., 64242., 60552., 64368., 74864., 79868., 75008.,
      80024., 75152., 80180., 75296., 80336., 75440., 80492., 75584., 80648.,
      75728., 80804., 75872., 80960., 52227., 55980., 52326., 56088., 52425.,
      56196., 52524., 56304., 52623., 56412., 52722., 56520., 52821., 56628.,
      52920., 56736., 53019., 56844., 53118., 56952., 53217., 57060., 53316.,
      57168., 22310., 24476., 22364., 24536., 22418., 24596., 22472., 24656.,
      22526., 24716., 22580., 24776., 22634., 24836., 22688., 24896., 27008.,
      29896., 27072., 29968., 27136., 30040., 27200., 30112., 27264., 30184.,
      27328., 30256., 27392., 30328., 27456., 30400., 17978., 20144., 18020.,
      20192., 18062., 20240., 18104., 20288., 18146., 20336., 18188., 20384.,
      18230., 20432., 18272., 20480., 18314., 20528., 18356., 20576., 18398.,
      20624., 18440., 20672., 25334., 27836., 25388., 27896., 25442., 27956.,
      25496., 28016., 25550., 28076., 25604., 28136., 25658., 28196., 25712.,
      28256., 30592., 33928., 30656., 34000., 30720., 34072., 30784., 34144.,
      30848., 34216., 30912., 34288., 30976., 34360., 31040., 34432., 20330.,
      22832., 20372., 22880., 20414., 22928., 20456., 22976., 20498., 23024.,
      20540., 23072., 20582., 23120., 20624., 23168., 20666., 23216., 20708.,
      23264., 20750., 23312., 20792., 23360.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2864., 3348.,  2880., 3368.,  2896., 3388.,  2912., 3408.,  2928., 3428.,
      2944., 3448.,  2960., 3468.,  2976., 3488.,  2992., 3508.,  3008., 3528.,
      3024., 3548.,  3040., 3568.,  3056., 3588.,  3072., 3608.,  3088., 3628.,
      3104., 3648.,  3120., 3668.,  3136., 3688.,  3152., 3708.,  3168., 3728.,
      3184., 3748.,  3200., 3768.,  3216., 3788.,  3232., 3808.,  3248., 3828.,
      3264., 3848.,  3280., 3868.,  3296., 3888.,  3760., 4468.,  3776., 4488.,
      3792., 4508.,  3808., 4528.,  3824., 4548.,  3840., 4568.,  3856., 4588.,
      3872., 4608.,  3888., 4628.,  3904., 4648.,  3920., 4668.,  3936., 4688.,
      3952., 4708.,  3968., 4728.,  3984., 4748.,  4000., 4768.,  4016., 4788.,
      4032., 4808.,  4048., 4828.,  4064., 4848.,  4080., 4868.,  4096., 4888.,
      4112., 4908.,  4128., 4928.,  4144., 4948.,  4160., 4968.,  4176., 4988.,
      4192., 5008.,  4656., 5588.,  4672., 5608.,  4688., 5628.,  4704., 5648.,
      4720., 5668.,  4736., 5688.,  4752., 5708.,  4768., 5728.,  4784., 5748.,
      4800., 5768.,  4816., 5788.,  4832., 5808.,  4848., 5828.,  4864., 5848.,
      4880., 5868.,  4896., 5888.,  4912., 5908.,  4928., 5928.,  4944., 5948.,
      4960., 5968.,  4976., 5988.,  4992., 6008.,  5008., 6028.,  5024., 6048.,
      5040., 6068.,  5056., 6088.,  5072., 6108.,  5088., 6128.,  5552., 6708.,
      5568., 6728.,  5584., 6748.,  5600., 6768.,  5616., 6788.,  5632., 6808.,
      5648., 6828.,  5664., 6848.,  5680., 6868.,  5696., 6888.,  5712., 6908.,
      5728., 6928.,  5744., 6948.,  5760., 6968.,  5776., 6988.,  5792., 7008.,
      5808., 7028.,  5824., 7048.,  5840., 7068.,  5856., 7088.,  5872., 7108.,
      5888., 7128.,  5904., 7148.,  5920., 7168.,  5936., 7188.,  5952., 7208.,
      5968., 7228.,  5984., 7248.,  6448., 7828.,  6464., 7848.,  6480., 7868.,
      6496., 7888.,  6512., 7908.,  6528., 7928.,  6544., 7948.,  6560., 7968.,
      6576., 7988.,  6592., 8008.,  6608., 8028.,  6624., 8048.,  6640., 8068.,
      6656., 8088.,  6672., 8108.,  6688., 8128.,  6704., 8148.,  6720., 8168.,
      6736., 8188.,  6752., 8208.,  6768., 8228.,  6784., 8248.,  6800., 8268.,
      6816., 8288.,  6832., 8308.,  6848., 8328.,  6864., 8348.,  6880., 8368.,
      7344., 8948.,  7360., 8968.,  7376., 8988.,  7392., 9008.,  7408., 9028.,
      7424., 9048.,  7440., 9068.,  7456., 9088.,  7472., 9108.,  7488., 9128.,
      7504., 9148.,  7520., 9168.,  7536., 9188.,  7552., 9208.,  7568., 9228.,
      7584., 9248.,  7600., 9268.,  7616., 9288.,  7632., 9308.,  7648., 9328.,
      7664., 9348.,  7680., 9368.,  7696., 9388.,  7712., 9408.,  7728., 9428.,
      7744., 9448.,  7760., 9468.,  7776., 9488.,  8240., 10068., 8256., 10088.,
      8272., 10108., 8288., 10128., 8304., 10148., 8320., 10168., 8336., 10188.,
      8352., 10208., 8368., 10228., 8384., 10248., 8400., 10268., 8416., 10288.,
      8432., 10308., 8448., 10328., 8464., 10348., 8480., 10368., 8496., 10388.,
      8512., 10408., 8528., 10428., 8544., 10448., 8560., 10468., 8576., 10488.,
      8592., 10508., 8608., 10528., 8624., 10548., 8640., 10568., 8656., 10588.,
      8672., 10608.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x12x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      66022.,  67852.,  69682.,  71512.,  66220.,  68056.,  69892.,  71728.,
      66418.,  68260.,  70102.,  71944.,  66616.,  68464.,  70312.,  72160.,
      66814.,  68668.,  70522.,  72376.,  67012.,  68872.,  70732.,  72592.,
      67210.,  69076.,  70942.,  72808.,  67408.,  69280.,  71152.,  73024.,
      83448.,  85888.,  88328.,  90768.,  83696.,  86144.,  88592.,  91040.,
      83944.,  86400.,  88856.,  91312.,  84192.,  86656.,  89120.,  91584.,
      84440.,  86912.,  89384.,  91856.,  84688.,  87168.,  89648.,  92128.,
      84936.,  87424.,  89912.,  92400.,  85184.,  87680.,  90176.,  92672.,
      58702.,  60532.,  62362.,  64192.,  58876.,  60712.,  62548.,  64384.,
      59050.,  60892.,  62734.,  64576.,  59224.,  61072.,  62920.,  64768.,
      59398.,  61252.,  63106.,  64960.,  59572.,  61432.,  63292.,  65152.,
      59746.,  61612.,  63478.,  65344.,  59920.,  61792.,  63664.,  65536.,
      60094.,  61972.,  63850.,  65728.,  60268.,  62152.,  64036.,  65920.,
      60442.,  62332.,  64222.,  66112.,  60616.,  62512.,  64408.,  66304.,
      77913.,  80154.,  82395.,  84636.,  78138.,  80388.,  82638.,  84888.,
      78363.,  80622.,  82881.,  85140.,  78588.,  80856.,  83124.,  85392.,
      78813.,  81090.,  83367.,  85644.,  79038.,  81324.,  83610.,  85896.,
      79263.,  81558.,  83853.,  86148.,  79488.,  81792.,  84096.,  86400.,
      98356.,  101344., 104332., 107320., 98632.,  101632., 104632., 107632.,
      98908.,  101920., 104932., 107944., 99184.,  102208., 105232., 108256.,
      99460.,  102496., 105532., 108568., 99736.,  102784., 105832., 108880.,
      100012., 103072., 106132., 109192., 100288., 103360., 106432., 109504.,
      68949.,  71190.,  73431.,  75672.,  69138.,  71388.,  73638.,  75888.,
      69327.,  71586.,  73845.,  76104.,  69516.,  71784.,  74052.,  76320.,
      69705.,  71982.,  74259.,  76536.,  69894.,  72180.,  74466.,  76752.,
      70083.,  72378.,  74673.,  76968.,  70272.,  72576.,  74880.,  77184.,
      70461.,  72774.,  75087.,  77400.,  70650.,  72972.,  75294.,  77616.,
      70839.,  73170.,  75501.,  77832.,  71028.,  73368.,  75708.,  78048.,
      90513.,  93258.,  96003.,  98748.,  90738.,  93492.,  96246.,  99000.,
      90963.,  93726.,  96489.,  99252.,  91188.,  93960.,  96732.,  99504.,
      91413.,  94194.,  96975.,  99756.,  91638.,  94428.,  97218.,  100008.,
      91863.,  94662.,  97461.,  100260., 92088.,  94896.,  97704.,  100512.,
      113812., 117472., 121132., 124792., 114088., 117760., 121432., 125104.,
      114364., 118048., 121732., 125416., 114640., 118336., 122032., 125728.,
      114916., 118624., 122332., 126040., 115192., 118912., 122632., 126352.,
      115468., 119200., 122932., 126664., 115744., 119488., 123232., 126976.,
      79533.,  82278.,  85023.,  87768.,  79722.,  82476.,  85230.,  87984.,
      79911.,  82674.,  85437.,  88200.,  80100.,  82872.,  85644.,  88416.,
      80289.,  83070.,  85851.,  88632.,  80478.,  83268.,  86058.,  88848.,
      80667.,  83466.,  86265.,  89064.,  80856.,  83664.,  86472.,  89280.,
      81045.,  83862.,  86679.,  89496.,  81234.,  84060.,  86886.,  89712.,
      81423.,  84258.,  87093.,  89928.,  81612.,  84456.,  87300.,  90144.,
      103113., 106362., 109611., 112860., 103338., 106596., 109854., 113112.,
      103563., 106830., 110097., 113364., 103788., 107064., 110340., 113616.,
      104013., 107298., 110583., 113868., 104238., 107532., 110826., 114120.,
      104463., 107766., 111069., 114372., 104688., 108000., 111312., 114624.,
      129268., 133600., 137932., 142264., 129544., 133888., 138232., 142576.,
      129820., 134176., 138532., 142888., 130096., 134464., 138832., 143200.,
      130372., 134752., 139132., 143512., 130648., 135040., 139432., 143824.,
      130924., 135328., 139732., 144136., 131200., 135616., 140032., 144448.,
      90117.,  93366.,  96615.,  99864.,  90306.,  93564.,  96822.,  100080.,
      90495.,  93762.,  97029.,  100296., 90684.,  93960.,  97236.,  100512.,
      90873.,  94158.,  97443.,  100728., 91062.,  94356.,  97650.,  100944.,
      91251.,  94554.,  97857.,  101160., 91440.,  94752.,  98064.,  101376.,
      91629.,  94950.,  98271.,  101592., 91818.,  95148.,  98478.,  101808.,
      92007.,  95346.,  98685.,  102024., 92196.,  95544.,  98892.,  102240.,
      115713., 119466., 123219., 126972., 115938., 119700., 123462., 127224.,
      116163., 119934., 123705., 127476., 116388., 120168., 123948., 127728.,
      116613., 120402., 124191., 127980., 116838., 120636., 124434., 128232.,
      117063., 120870., 124677., 128484., 117288., 121104., 124920., 128736.,
      144724., 149728., 154732., 159736., 145000., 150016., 155032., 160048.,
      145276., 150304., 155332., 160360., 145552., 150592., 155632., 160672.,
      145828., 150880., 155932., 160984., 146104., 151168., 156232., 161296.,
      146380., 151456., 156532., 161608., 146656., 151744., 156832., 161920.,
      100701., 104454., 108207., 111960., 100890., 104652., 108414., 112176.,
      101079., 104850., 108621., 112392., 101268., 105048., 108828., 112608.,
      101457., 105246., 109035., 112824., 101646., 105444., 109242., 113040.,
      101835., 105642., 109449., 113256., 102024., 105840., 109656., 113472.,
      102213., 106038., 109863., 113688., 102402., 106236., 110070., 113904.,
      102591., 106434., 110277., 114120., 102780., 106632., 110484., 114336.,
      42454.,  44620.,  46786.,  48952.,  42556.,  44728.,  46900.,  49072.,
      42658.,  44836.,  47014.,  49192.,  42760.,  44944.,  47128.,  49312.,
      42862.,  45052.,  47242.,  49432.,  42964.,  45160.,  47356.,  49552.,
      43066.,  45268.,  47470.,  49672.,  43168.,  45376.,  47584.,  49792.,
      51128.,  54016.,  56904.,  59792.,  51248.,  54144.,  57040.,  59936.,
      51368.,  54272.,  57176.,  60080.,  51488.,  54400.,  57312.,  60224.,
      51608.,  54528.,  57448.,  60368.,  51728.,  54656.,  57584.,  60512.,
      51848.,  54784.,  57720.,  60656.,  51968.,  54912.,  57856.,  60800.,
      33790.,  35956.,  38122.,  40288.,  33868.,  36040.,  38212.,  40384.,
      33946.,  36124.,  38302.,  40480.,  34024.,  36208.,  38392.,  40576.,
      34102.,  36292.,  38482.,  40672.,  34180.,  36376.,  38572.,  40768.,
      34258.,  36460.,  38662.,  40864.,  34336.,  36544.,  38752.,  40960.,
      34414.,  36628.,  38842.,  41056.,  34492.,  36712.,  38932.,  41152.,
      34570.,  36796.,  39022.,  41248.,  34648.,  36880.,  39112.,  41344.,
      48166.,  50668.,  53170.,  55672.,  48268.,  50776.,  53284.,  55792.,
      48370.,  50884.,  53398.,  55912.,  48472.,  50992.,  53512.,  56032.,
      48574.,  51100.,  53626.,  56152.,  48676.,  51208.,  53740.,  56272.,
      48778.,  51316.,  53854.,  56392.,  48880.,  51424.,  53968.,  56512.,
      57848.,  61184.,  64520.,  67856.,  57968.,  61312.,  64656.,  68000.,
      58088.,  61440.,  64792.,  68144.,  58208.,  61568.,  64928.,  68288.,
      58328.,  61696.,  65064.,  68432.,  58448.,  61824.,  65200.,  68576.,
      58568.,  61952.,  65336.,  68720.,  58688.,  62080.,  65472.,  68864.,
      38158.,  40660.,  43162.,  45664.,  38236.,  40744.,  43252.,  45760.,
      38314.,  40828.,  43342.,  45856.,  38392.,  40912.,  43432.,  45952.,
      38470.,  40996.,  43522.,  46048.,  38548.,  41080.,  43612.,  46144.,
      38626.,  41164.,  43702.,  46240.,  38704.,  41248.,  43792.,  46336.,
      38782.,  41332.,  43882.,  46432.,  38860.,  41416.,  43972.,  46528.,
      38938.,  41500.,  44062.,  46624.,  39016.,  41584.,  44152.,  46720.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x12x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5244.,  5728.,  6212.,  6696.,  5272.,  5760.,  6248.,  6736.,  5300.,
      5792.,  6284.,  6776.,  5328.,  5824.,  6320.,  6816.,  5356.,  5856.,
      6356.,  6856.,  5384.,  5888.,  6392.,  6896.,  5412.,  5920.,  6428.,
      6936.,  5440.,  5952.,  6464.,  6976.,  5468.,  5984.,  6500.,  7016.,
      5496.,  6016.,  6536.,  7056.,  5524.,  6048.,  6572.,  7096.,  5552.,
      6080.,  6608.,  7136.,  5580.,  6112.,  6644.,  7176.,  5608.,  6144.,
      6680.,  7216.,  5636.,  6176.,  6716.,  7256.,  5664.,  6208.,  6752.,
      7296.,  5692.,  6240.,  6788.,  7336.,  5720.,  6272.,  6824.,  7376.,
      5748.,  6304.,  6860.,  7416.,  5776.,  6336.,  6896.,  7456.,  5804.,
      6368.,  6932.,  7496.,  5832.,  6400.,  6968.,  7536.,  5860.,  6432.,
      7004.,  7576.,  5888.,  6464.,  7040.,  7616.,  5916.,  6496.,  7076.,
      7656.,  5944.,  6528.,  7112.,  7696.,  5972.,  6560.,  7148.,  7736.,
      6000.,  6592.,  7184.,  7776.,  6812.,  7520.,  8228.,  8936.,  6840.,
      7552.,  8264.,  8976.,  6868.,  7584.,  8300.,  9016.,  6896.,  7616.,
      8336.,  9056.,  6924.,  7648.,  8372.,  9096.,  6952.,  7680.,  8408.,
      9136.,  6980.,  7712.,  8444.,  9176.,  7008.,  7744.,  8480.,  9216.,
      7036.,  7776.,  8516.,  9256.,  7064.,  7808.,  8552.,  9296.,  7092.,
      7840.,  8588.,  9336.,  7120.,  7872.,  8624.,  9376.,  7148.,  7904.,
      8660.,  9416.,  7176.,  7936.,  8696.,  9456.,  7204.,  7968.,  8732.,
      9496.,  7232.,  8000.,  8768.,  9536.,  7260.,  8032.,  8804.,  9576.,
      7288.,  8064.,  8840.,  9616.,  7316.,  8096.,  8876.,  9656.,  7344.,
      8128.,  8912.,  9696.,  7372.,  8160.,  8948.,  9736.,  7400.,  8192.,
      8984.,  9776.,  7428.,  8224.,  9020.,  9816.,  7456.,  8256.,  9056.,
      9856.,  7484.,  8288.,  9092.,  9896.,  7512.,  8320.,  9128.,  9936.,
      7540.,  8352.,  9164.,  9976.,  7568.,  8384.,  9200.,  10016., 8380.,
      9312.,  10244., 11176., 8408.,  9344.,  10280., 11216., 8436.,  9376.,
      10316., 11256., 8464.,  9408.,  10352., 11296., 8492.,  9440.,  10388.,
      11336., 8520.,  9472.,  10424., 11376., 8548.,  9504.,  10460., 11416.,
      8576.,  9536.,  10496., 11456., 8604.,  9568.,  10532., 11496., 8632.,
      9600.,  10568., 11536., 8660.,  9632.,  10604., 11576., 8688.,  9664.,
      10640., 11616., 8716.,  9696.,  10676., 11656., 8744.,  9728.,  10712.,
      11696., 8772.,  9760.,  10748., 11736., 8800.,  9792.,  10784., 11776.,
      8828.,  9824.,  10820., 11816., 8856.,  9856.,  10856., 11856., 8884.,
      9888.,  10892., 11896., 8912.,  9920.,  10928., 11936., 8940.,  9952.,
      10964., 11976., 8968.,  9984.,  11000., 12016., 8996.,  10016., 11036.,
      12056., 9024.,  10048., 11072., 12096., 9052.,  10080., 11108., 12136.,
      9080.,  10112., 11144., 12176., 9108.,  10144., 11180., 12216., 9136.,
      10176., 11216., 12256., 9948.,  11104., 12260., 13416., 9976.,  11136.,
      12296., 13456., 10004., 11168., 12332., 13496., 10032., 11200., 12368.,
      13536., 10060., 11232., 12404., 13576., 10088., 11264., 12440., 13616.,
      10116., 11296., 12476., 13656., 10144., 11328., 12512., 13696., 10172.,
      11360., 12548., 13736., 10200., 11392., 12584., 13776., 10228., 11424.,
      12620., 13816., 10256., 11456., 12656., 13856., 10284., 11488., 12692.,
      13896., 10312., 11520., 12728., 13936., 10340., 11552., 12764., 13976.,
      10368., 11584., 12800., 14016., 10396., 11616., 12836., 14056., 10424.,
      11648., 12872., 14096., 10452., 11680., 12908., 14136., 10480., 11712.,
      12944., 14176., 10508., 11744., 12980., 14216., 10536., 11776., 13016.,
      14256., 10564., 11808., 13052., 14296., 10592., 11840., 13088., 14336.,
      10620., 11872., 13124., 14376., 10648., 11904., 13160., 14416., 10676.,
      11936., 13196., 14456., 10704., 11968., 13232., 14496., 11516., 12896.,
      14276., 15656., 11544., 12928., 14312., 15696., 11572., 12960., 14348.,
      15736., 11600., 12992., 14384., 15776., 11628., 13024., 14420., 15816.,
      11656., 13056., 14456., 15856., 11684., 13088., 14492., 15896., 11712.,
      13120., 14528., 15936., 11740., 13152., 14564., 15976., 11768., 13184.,
      14600., 16016., 11796., 13216., 14636., 16056., 11824., 13248., 14672.,
      16096., 11852., 13280., 14708., 16136., 11880., 13312., 14744., 16176.,
      11908., 13344., 14780., 16216., 11936., 13376., 14816., 16256., 11964.,
      13408., 14852., 16296., 11992., 13440., 14888., 16336., 12020., 13472.,
      14924., 16376., 12048., 13504., 14960., 16416., 12076., 13536., 14996.,
      16456., 12104., 13568., 15032., 16496., 12132., 13600., 15068., 16536.,
      12160., 13632., 15104., 16576., 12188., 13664., 15140., 16616., 12216.,
      13696., 15176., 16656., 12244., 13728., 15212., 16696., 12272., 13760.,
      15248., 16736., 13084., 14688., 16292., 17896., 13112., 14720., 16328.,
      17936., 13140., 14752., 16364., 17976., 13168., 14784., 16400., 18016.,
      13196., 14816., 16436., 18056., 13224., 14848., 16472., 18096., 13252.,
      14880., 16508., 18136., 13280., 14912., 16544., 18176., 13308., 14944.,
      16580., 18216., 13336., 14976., 16616., 18256., 13364., 15008., 16652.,
      18296., 13392., 15040., 16688., 18336., 13420., 15072., 16724., 18376.,
      13448., 15104., 16760., 18416., 13476., 15136., 16796., 18456., 13504.,
      15168., 16832., 18496., 13532., 15200., 16868., 18536., 13560., 15232.,
      16904., 18576., 13588., 15264., 16940., 18616., 13616., 15296., 16976.,
      18656., 13644., 15328., 17012., 18696., 13672., 15360., 17048., 18736.,
      13700., 15392., 17084., 18776., 13728., 15424., 17120., 18816., 13756.,
      15456., 17156., 18856., 13784., 15488., 17192., 18896., 13812., 15520.,
      17228., 18936., 13840., 15552., 17264., 18976., 14652., 16480., 18308.,
      20136., 14680., 16512., 18344., 20176., 14708., 16544., 18380., 20216.,
      14736., 16576., 18416., 20256., 14764., 16608., 18452., 20296., 14792.,
      16640., 18488., 20336., 14820., 16672., 18524., 20376., 14848., 16704.,
      18560., 20416., 14876., 16736., 18596., 20456., 14904., 16768., 18632.,
      20496., 14932., 16800., 18668., 20536., 14960., 16832., 18704., 20576.,
      14988., 16864., 18740., 20616., 15016., 16896., 18776., 20656., 15044.,
      16928., 18812., 20696., 15072., 16960., 18848., 20736., 15100., 16992.,
      18884., 20776., 15128., 17024., 18920., 20816., 15156., 17056., 18956.,
      20856., 15184., 17088., 18992., 20896., 15212., 17120., 19028., 20936.,
      15240., 17152., 19064., 20976., 15268., 17184., 19100., 21016., 15296.,
      17216., 19136., 21056., 15324., 17248., 19172., 21096., 15352., 17280.,
      19208., 21136., 15380., 17312., 19244., 21176., 15408., 17344., 19280.,
      21216.};
  const std::array<int, 4> in_shape = {{1, 12, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4155., 4206., 5928., 6000., 6072., 3774., 3819., 4716., 4767., 6720.,
      6792., 6864., 4269., 4314., 5304., 5360., 7550., 7628., 7706., 4784.,
      4832., 5920., 5976., 8408., 8486., 8564., 5312., 5360., 2877., 2910.,
      4011., 4056., 4101., 2478., 2505., 3240., 3273., 4506., 4551., 4596.,
      2775., 2802., 3603., 3636., 5001., 5046., 5091., 3072., 3099.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      342., 352., 362.,  372.,  382.,  392.,  402.,  452.,  462., 472.,
      482., 492., 502.,  512.,  562.,  572.,  582.,  592.,  602., 612.,
      622., 672., 682.,  692.,  702.,  712.,  722.,  732.,  782., 792.,
      802., 812., 822.,  832.,  842.,  892.,  902.,  912.,  922., 932.,
      942., 952., 1002., 1012., 1022., 1032., 1042., 1052., 1062.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7884.,  8310.,  7980.,  8412.,  11217., 11856., 11352., 12000., 11487.,
      12144., 7116.,  7548.,  7200.,  7638.,  8940.,  9432.,  9036.,  9534.,
      12702., 13440., 12837., 13584., 12972., 13728., 8040.,  8538.,  8124.,
      8628.,  10040., 10608., 10144., 10720., 14248., 15100., 14392., 15256.,
      14536., 15412., 8992.,  9568.,  9080.,  9664.,  11184., 11840., 11288.,
      11952., 15832., 16816., 15976., 16972., 16120., 17128., 9960.,  10624.,
      10048., 10720., 5328.,  5754.,  5388.,  5820.,  7383.,  8022.,  7464.,
      8112.,  7545.,  8202.,  4524.,  4956.,  4572.,  5010.,  5988.,  6480.,
      6048.,  6546.,  8274.,  9012.,  8355.,  9102.,  8436.,  9192.,  5052.,
      5550.,  5100.,  5604.,  6648.,  7206.,  6708.,  7272.,  9165.,  10002.,
      9246.,  10092., 9327.,  10182., 5580.,  6144.,  5628.,  6198.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      584.,  684.,  600.,  704.,  616.,  724.,  632.,  744.,  648.,  764.,
      664.,  784.,  680.,  804.,  760.,  904.,  776.,  924.,  792.,  944.,
      808.,  964.,  824.,  984.,  840.,  1004., 856.,  1024., 936.,  1124.,
      952.,  1144., 968.,  1164., 984.,  1184., 1000., 1204., 1016., 1224.,
      1032., 1244., 1112., 1344., 1128., 1364., 1144., 1384., 1160., 1404.,
      1176., 1424., 1192., 1444., 1208., 1464., 1288., 1564., 1304., 1584.,
      1320., 1604., 1336., 1624., 1352., 1644., 1368., 1664., 1384., 1684.,
      1464., 1784., 1480., 1804., 1496., 1824., 1512., 1844., 1528., 1864.,
      1544., 1884., 1560., 1904., 1640., 2004., 1656., 2024., 1672., 2044.,
      1688., 2064., 1704., 2084., 1720., 2104., 1736., 2124.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15342., 15768., 16194., 16620., 15528., 15960., 16392., 16824., 21795.,
      22434., 23073., 23712., 22056., 22704., 23352., 24000., 22317., 22974.,
      23631., 24288., 13800., 14232., 14664., 15096., 13962., 14400., 14838.,
      15276., 17388., 17880., 18372., 18864., 17574., 18072., 18570., 19068.,
      24666., 25404., 26142., 26880., 24927., 25674., 26421., 27168., 25188.,
      25944., 26700., 27456., 15582., 16080., 16578., 17076., 15744., 16248.,
      16752., 17256., 19512., 20080., 20648., 21216., 19712., 20288., 20864.,
      21440., 27644., 28496., 29348., 30200., 27920., 28784., 29648., 30512.,
      28196., 29072., 29948., 30824., 17408., 17984., 18560., 19136., 17576.,
      18160., 18744., 19328., 21712., 22368., 23024., 23680., 21912., 22576.,
      23240., 23904., 30680., 31664., 32648., 33632., 30956., 31952., 32948.,
      33944., 31232., 32240., 33248., 34256., 19256., 19920., 20584., 21248.,
      19424., 20096., 20768., 21440., 10230., 10656., 11082., 11508., 10344.,
      10776., 11208., 11640., 14127., 14766., 15405., 16044., 14280., 14928.,
      15576., 16224., 14433., 15090., 15747., 16404., 8616.,  9048.,  9480.,
      9912.,  8706.,  9144.,  9582.,  10020., 11484., 11976., 12468., 12960.,
      11598., 12096., 12594., 13092., 15810., 16548., 17286., 18024., 15963.,
      16710., 17457., 18204., 16116., 16872., 17628., 18384., 9606.,  10104.,
      10602., 11100., 9696.,  10200., 10704., 11208., 12738., 13296., 13854.,
      14412., 12852., 13416., 13980., 14544., 17493., 18330., 19167., 20004.,
      17646., 18492., 19338., 20184., 17799., 18654., 19509., 20364., 10596.,
      11160., 11724., 12288., 10686., 11256., 11826., 12396.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1068., 1168., 1268., 1368., 1096., 1200., 1304., 1408., 1124., 1232.,
      1340., 1448., 1152., 1264., 1376., 1488., 1180., 1296., 1412., 1528.,
      1208., 1328., 1448., 1568., 1236., 1360., 1484., 1608., 1376., 1520.,
      1664., 1808., 1404., 1552., 1700., 1848., 1432., 1584., 1736., 1888.,
      1460., 1616., 1772., 1928., 1488., 1648., 1808., 1968., 1516., 1680.,
      1844., 2008., 1544., 1712., 1880., 2048., 1684., 1872., 2060., 2248.,
      1712., 1904., 2096., 2288., 1740., 1936., 2132., 2328., 1768., 1968.,
      2168., 2368., 1796., 2000., 2204., 2408., 1824., 2032., 2240., 2448.,
      1852., 2064., 2276., 2488., 1992., 2224., 2456., 2688., 2020., 2256.,
      2492., 2728., 2048., 2288., 2528., 2768., 2076., 2320., 2564., 2808.,
      2104., 2352., 2600., 2848., 2132., 2384., 2636., 2888., 2160., 2416.,
      2672., 2928., 2300., 2576., 2852., 3128., 2328., 2608., 2888., 3168.,
      2356., 2640., 2924., 3208., 2384., 2672., 2960., 3248., 2412., 2704.,
      2996., 3288., 2440., 2736., 3032., 3328., 2468., 2768., 3068., 3368.,
      2608., 2928., 3248., 3568., 2636., 2960., 3284., 3608., 2664., 2992.,
      3320., 3648., 2692., 3024., 3356., 3688., 2720., 3056., 3392., 3728.,
      2748., 3088., 3428., 3768., 2776., 3120., 3464., 3808., 2916., 3280.,
      3644., 4008., 2944., 3312., 3680., 4048., 2972., 3344., 3716., 4088.,
      3000., 3376., 3752., 4128., 3028., 3408., 3788., 4168., 3056., 3440.,
      3824., 4208., 3084., 3472., 3860., 4248.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8259.,  8310.,  8361.,  8412.,  11784., 11856., 11928., 12000., 12072.,
      12144., 7503.,  7548.,  7593.,  7638.,  9381.,  9432.,  9483.,  9534.,
      13368., 13440., 13512., 13584., 13656., 13728., 8493.,  8538.,  8583.,
      8628.,  10552., 10608., 10664., 10720., 15022., 15100., 15178., 15256.,
      15334., 15412., 9520.,  9568.,  9616.,  9664.,  11784., 11840., 11896.,
      11952., 16738., 16816., 16894., 16972., 17050., 17128., 10576., 10624.,
      10672., 10720., 5721.,  5754.,  5787.,  5820.,  7977.,  8022.,  8067.,
      8112.,  8157.,  8202.,  4929.,  4956.,  4983.,  5010.,  6447.,  6480.,
      6513.,  6546.,  8967.,  9012.,  9057.,  9102.,  9147.,  9192.,  5523.,
      5550.,  5577.,  5604.,  7173.,  7206.,  7239.,  7272.,  9957.,  10002.,
      10047., 10092., 10137., 10182., 6117.,  6144.,  6171.,  6198.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      674.,  684.,  694.,  704.,  714.,  724.,  734.,  744.,  754.,  764.,
      774.,  784.,  794.,  804.,  894.,  904.,  914.,  924.,  934.,  944.,
      954.,  964.,  974.,  984.,  994.,  1004., 1014., 1024., 1114., 1124.,
      1134., 1144., 1154., 1164., 1174., 1184., 1194., 1204., 1214., 1224.,
      1234., 1244., 1334., 1344., 1354., 1364., 1374., 1384., 1394., 1404.,
      1414., 1424., 1434., 1444., 1454., 1464., 1554., 1564., 1574., 1584.,
      1594., 1604., 1614., 1624., 1634., 1644., 1654., 1664., 1674., 1684.,
      1774., 1784., 1794., 1804., 1814., 1824., 1834., 1844., 1854., 1864.,
      1874., 1884., 1894., 1904., 1994., 2004., 2014., 2024., 2034., 2044.,
      2054., 2064., 2074., 2084., 2094., 2104., 2114., 2124.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15672., 16518., 15768., 16620., 15864., 16722., 15960., 16824., 22299.,
      23568., 22434., 23712., 22569., 23856., 22704., 24000., 22839., 24144.,
      22974., 24288., 14148., 15006., 14232., 15096., 14316., 15186., 14400.,
      15276., 17784., 18762., 17880., 18864., 17976., 18966., 18072., 19068.,
      25269., 26736., 25404., 26880., 25539., 27024., 25674., 27168., 25809.,
      27312., 25944., 27456., 15996., 16986., 16080., 17076., 16164., 17166.,
      16248., 17256., 19976., 21104., 20080., 21216., 20184., 21328., 20288.,
      21440., 28352., 30044., 28496., 30200., 28640., 30356., 28784., 30512.,
      28928., 30668., 29072., 30824., 17896., 19040., 17984., 19136., 18072.,
      19232., 18160., 19328., 22264., 23568., 22368., 23680., 22472., 23792.,
      22576., 23904., 31520., 33476., 31664., 33632., 31808., 33788., 31952.,
      33944., 32096., 34100., 32240., 34256., 19832., 21152., 19920., 21248.,
      20008., 21344., 20096., 21440., 10596., 11442., 10656., 11508., 10716.,
      11574., 10776., 11640., 14685., 15954., 14766., 16044., 14847., 16134.,
      14928., 16224., 15009., 16314., 15090., 16404., 9000.,  9858.,  9048.,
      9912.,  9096.,  9966.,  9144.,  10020., 11916., 12894., 11976., 12960.,
      12036., 13026., 12096., 13092., 16467., 17934., 16548., 18024., 16629.,
      18114., 16710., 18204., 16791., 18294., 16872., 18384., 10056., 11046.,
      10104., 11100., 10152., 11154., 10200., 11208., 13236., 14346., 13296.,
      14412., 13356., 14478., 13416., 14544., 18249., 19914., 18330., 20004.,
      18411., 20094., 18492., 20184., 18573., 20274., 18654., 20364., 11112.,
      12234., 11160., 12288., 11208., 12342., 11256., 12396.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1152., 1348., 1168., 1368., 1184., 1388., 1200., 1408., 1216., 1428.,
      1232., 1448., 1248., 1468., 1264., 1488., 1280., 1508., 1296., 1528.,
      1312., 1548., 1328., 1568., 1344., 1588., 1360., 1608., 1504., 1788.,
      1520., 1808., 1536., 1828., 1552., 1848., 1568., 1868., 1584., 1888.,
      1600., 1908., 1616., 1928., 1632., 1948., 1648., 1968., 1664., 1988.,
      1680., 2008., 1696., 2028., 1712., 2048., 1856., 2228., 1872., 2248.,
      1888., 2268., 1904., 2288., 1920., 2308., 1936., 2328., 1952., 2348.,
      1968., 2368., 1984., 2388., 2000., 2408., 2016., 2428., 2032., 2448.,
      2048., 2468., 2064., 2488., 2208., 2668., 2224., 2688., 2240., 2708.,
      2256., 2728., 2272., 2748., 2288., 2768., 2304., 2788., 2320., 2808.,
      2336., 2828., 2352., 2848., 2368., 2868., 2384., 2888., 2400., 2908.,
      2416., 2928., 2560., 3108., 2576., 3128., 2592., 3148., 2608., 3168.,
      2624., 3188., 2640., 3208., 2656., 3228., 2672., 3248., 2688., 3268.,
      2704., 3288., 2720., 3308., 2736., 3328., 2752., 3348., 2768., 3368.,
      2912., 3548., 2928., 3568., 2944., 3588., 2960., 3608., 2976., 3628.,
      2992., 3648., 3008., 3668., 3024., 3688., 3040., 3708., 3056., 3728.,
      3072., 3748., 3088., 3768., 3104., 3788., 3120., 3808., 3264., 3988.,
      3280., 4008., 3296., 4028., 3312., 4048., 3328., 4068., 3344., 4088.,
      3360., 4108., 3376., 4128., 3392., 4148., 3408., 4168., 3424., 4188.,
      3440., 4208., 3456., 4228., 3472., 4248.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30498., 31344., 32190., 33036., 30684., 31536., 32388., 33240., 30870.,
      31728., 32586., 33444., 31056., 31920., 32784., 33648., 43329., 44598.,
      45867., 47136., 43590., 44868., 46146., 47424., 43851., 45138., 46425.,
      47712., 44112., 45408., 46704., 48000., 44373., 45678., 46983., 48288.,
      44634., 45948., 47262., 48576., 27438., 28296., 29154., 30012., 27600.,
      28464., 29328., 30192., 27762., 28632., 29502., 30372., 27924., 28800.,
      29676., 30552., 34590., 35568., 36546., 37524., 34776., 35760., 36744.,
      37728., 34962., 35952., 36942., 37932., 35148., 36144., 37140., 38136.,
      49071., 50538., 52005., 53472., 49332., 50808., 52284., 53760., 49593.,
      51078., 52563., 54048., 49854., 51348., 52842., 54336., 50115., 51618.,
      53121., 54624., 50376., 51888., 53400., 54912., 31002., 31992., 32982.,
      33972., 31164., 32160., 33156., 34152., 31326., 32328., 33330., 34332.,
      31488., 32496., 33504., 34512., 38824., 39952., 41080., 42208., 39024.,
      40160., 41296., 42432., 39224., 40368., 41512., 42656., 39424., 40576.,
      41728., 42880., 55012., 56704., 58396., 60088., 55288., 56992., 58696.,
      60400., 55564., 57280., 58996., 60712., 55840., 57568., 59296., 61024.,
      56116., 57856., 59596., 61336., 56392., 58144., 59896., 61648., 34648.,
      35792., 36936., 38080., 34816., 35968., 37120., 38272., 34984., 36144.,
      37304., 38464., 35152., 36320., 37488., 38656., 43224., 44528., 45832.,
      47136., 43424., 44736., 46048., 47360., 43624., 44944., 46264., 47584.,
      43824., 45152., 46480., 47808., 61084., 63040., 64996., 66952., 61360.,
      63328., 65296., 67264., 61636., 63616., 65596., 67576., 61912., 63904.,
      65896., 67888., 62188., 64192., 66196., 68200., 62464., 64480., 66496.,
      68512., 38344., 39664., 40984., 42304., 38512., 39840., 41168., 42496.,
      38680., 40016., 41352., 42688., 38848., 40192., 41536., 42880., 20346.,
      21192., 22038., 22884., 20460., 21312., 22164., 23016., 20574., 21432.,
      22290., 23148., 20688., 21552., 22416., 23280., 28101., 29370., 30639.,
      31908., 28254., 29532., 30810., 32088., 28407., 29694., 30981., 32268.,
      28560., 29856., 31152., 32448., 28713., 30018., 31323., 32628., 28866.,
      30180., 31494., 32808., 17142., 18000., 18858., 19716., 17232., 18096.,
      18960., 19824., 17322., 18192., 19062., 19932., 17412., 18288., 19164.,
      20040., 22854., 23832., 24810., 25788., 22968., 23952., 24936., 25920.,
      23082., 24072., 25062., 26052., 23196., 24192., 25188., 26184., 31467.,
      32934., 34401., 35868., 31620., 33096., 34572., 36048., 31773., 33258.,
      34743., 36228., 31926., 33420., 34914., 36408., 32079., 33582., 35085.,
      36588., 32232., 33744., 35256., 36768., 19122., 20112., 21102., 22092.,
      19212., 20208., 21204., 22200., 19302., 20304., 21306., 22308., 19392.,
      20400., 21408., 22416., 25362., 26472., 27582., 28692., 25476., 26592.,
      27708., 28824., 25590., 26712., 27834., 28956., 25704., 26832., 27960.,
      29088., 34833., 36498., 38163., 39828., 34986., 36660., 38334., 40008.,
      35139., 36822., 38505., 40188., 35292., 36984., 38676., 40368., 35445.,
      37146., 38847., 40548., 35598., 37308., 39018., 40728., 21102., 22224.,
      23346., 24468., 21192., 22320., 23448., 24576., 21282., 22416., 23550.,
      24684., 21372., 22512., 23652., 24792.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2108., 2304., 2500., 2696., 2136., 2336., 2536., 2736., 2164., 2368.,
      2572., 2776., 2192., 2400., 2608., 2816., 2220., 2432., 2644., 2856.,
      2248., 2464., 2680., 2896., 2276., 2496., 2716., 2936., 2304., 2528.,
      2752., 2976., 2332., 2560., 2788., 3016., 2360., 2592., 2824., 3056.,
      2388., 2624., 2860., 3096., 2416., 2656., 2896., 3136., 2444., 2688.,
      2932., 3176., 2472., 2720., 2968., 3216., 2724., 3008., 3292., 3576.,
      2752., 3040., 3328., 3616., 2780., 3072., 3364., 3656., 2808., 3104.,
      3400., 3696., 2836., 3136., 3436., 3736., 2864., 3168., 3472., 3776.,
      2892., 3200., 3508., 3816., 2920., 3232., 3544., 3856., 2948., 3264.,
      3580., 3896., 2976., 3296., 3616., 3936., 3004., 3328., 3652., 3976.,
      3032., 3360., 3688., 4016., 3060., 3392., 3724., 4056., 3088., 3424.,
      3760., 4096., 3340., 3712., 4084., 4456., 3368., 3744., 4120., 4496.,
      3396., 3776., 4156., 4536., 3424., 3808., 4192., 4576., 3452., 3840.,
      4228., 4616., 3480., 3872., 4264., 4656., 3508., 3904., 4300., 4696.,
      3536., 3936., 4336., 4736., 3564., 3968., 4372., 4776., 3592., 4000.,
      4408., 4816., 3620., 4032., 4444., 4856., 3648., 4064., 4480., 4896.,
      3676., 4096., 4516., 4936., 3704., 4128., 4552., 4976., 3956., 4416.,
      4876., 5336., 3984., 4448., 4912., 5376., 4012., 4480., 4948., 5416.,
      4040., 4512., 4984., 5456., 4068., 4544., 5020., 5496., 4096., 4576.,
      5056., 5536., 4124., 4608., 5092., 5576., 4152., 4640., 5128., 5616.,
      4180., 4672., 5164., 5656., 4208., 4704., 5200., 5696., 4236., 4736.,
      5236., 5736., 4264., 4768., 5272., 5776., 4292., 4800., 5308., 5816.,
      4320., 4832., 5344., 5856., 4572., 5120., 5668., 6216., 4600., 5152.,
      5704., 6256., 4628., 5184., 5740., 6296., 4656., 5216., 5776., 6336.,
      4684., 5248., 5812., 6376., 4712., 5280., 5848., 6416., 4740., 5312.,
      5884., 6456., 4768., 5344., 5920., 6496., 4796., 5376., 5956., 6536.,
      4824., 5408., 5992., 6576., 4852., 5440., 6028., 6616., 4880., 5472.,
      6064., 6656., 4908., 5504., 6100., 6696., 4936., 5536., 6136., 6736.,
      5188., 5824., 6460., 7096., 5216., 5856., 6496., 7136., 5244., 5888.,
      6532., 7176., 5272., 5920., 6568., 7216., 5300., 5952., 6604., 7256.,
      5328., 5984., 6640., 7296., 5356., 6016., 6676., 7336., 5384., 6048.,
      6712., 7376., 5412., 6080., 6748., 7416., 5440., 6112., 6784., 7456.,
      5468., 6144., 6820., 7496., 5496., 6176., 6856., 7536., 5524., 6208.,
      6892., 7576., 5552., 6240., 6928., 7616., 5804., 6528., 7252., 7976.,
      5832., 6560., 7288., 8016., 5860., 6592., 7324., 8056., 5888., 6624.,
      7360., 8096., 5916., 6656., 7396., 8136., 5944., 6688., 7432., 8176.,
      5972., 6720., 7468., 8216., 6000., 6752., 7504., 8256., 6028., 6784.,
      7540., 8296., 6056., 6816., 7576., 8336., 6084., 6848., 7612., 8376.,
      6112., 6880., 7648., 8416., 6140., 6912., 7684., 8456., 6168., 6944.,
      7720., 8496.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16467., 16518., 16569., 16620., 16671., 16722., 16773., 16824., 23496.,
      23568., 23640., 23712., 23784., 23856., 23928., 24000., 24072., 24144.,
      24216., 24288., 14961., 15006., 15051., 15096., 15141., 15186., 15231.,
      15276., 18711., 18762., 18813., 18864., 18915., 18966., 19017., 19068.,
      26664., 26736., 26808., 26880., 26952., 27024., 27096., 27168., 27240.,
      27312., 27384., 27456., 16941., 16986., 17031., 17076., 17121., 17166.,
      17211., 17256., 21048., 21104., 21160., 21216., 21272., 21328., 21384.,
      21440., 29966., 30044., 30122., 30200., 30278., 30356., 30434., 30512.,
      30590., 30668., 30746., 30824., 18992., 19040., 19088., 19136., 19184.,
      19232., 19280., 19328., 23512., 23568., 23624., 23680., 23736., 23792.,
      23848., 23904., 33398., 33476., 33554., 33632., 33710., 33788., 33866.,
      33944., 34022., 34100., 34178., 34256., 21104., 21152., 21200., 21248.,
      21296., 21344., 21392., 21440., 11409., 11442., 11475., 11508., 11541.,
      11574., 11607., 11640., 15909., 15954., 15999., 16044., 16089., 16134.,
      16179., 16224., 16269., 16314., 16359., 16404., 9831.,  9858.,  9885.,
      9912.,  9939.,  9966.,  9993.,  10020., 12861., 12894., 12927., 12960.,
      12993., 13026., 13059., 13092., 17889., 17934., 17979., 18024., 18069.,
      18114., 18159., 18204., 18249., 18294., 18339., 18384., 11019., 11046.,
      11073., 11100., 11127., 11154., 11181., 11208., 14313., 14346., 14379.,
      14412., 14445., 14478., 14511., 14544., 19869., 19914., 19959., 20004.,
      20049., 20094., 20139., 20184., 20229., 20274., 20319., 20364., 12207.,
      12234., 12261., 12288., 12315., 12342., 12369., 12396.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1338., 1348., 1358., 1368., 1378., 1388., 1398., 1408., 1418., 1428.,
      1438., 1448., 1458., 1468., 1478., 1488., 1498., 1508., 1518., 1528.,
      1538., 1548., 1558., 1568., 1578., 1588., 1598., 1608., 1778., 1788.,
      1798., 1808., 1818., 1828., 1838., 1848., 1858., 1868., 1878., 1888.,
      1898., 1908., 1918., 1928., 1938., 1948., 1958., 1968., 1978., 1988.,
      1998., 2008., 2018., 2028., 2038., 2048., 2218., 2228., 2238., 2248.,
      2258., 2268., 2278., 2288., 2298., 2308., 2318., 2328., 2338., 2348.,
      2358., 2368., 2378., 2388., 2398., 2408., 2418., 2428., 2438., 2448.,
      2458., 2468., 2478., 2488., 2658., 2668., 2678., 2688., 2698., 2708.,
      2718., 2728., 2738., 2748., 2758., 2768., 2778., 2788., 2798., 2808.,
      2818., 2828., 2838., 2848., 2858., 2868., 2878., 2888., 2898., 2908.,
      2918., 2928., 3098., 3108., 3118., 3128., 3138., 3148., 3158., 3168.,
      3178., 3188., 3198., 3208., 3218., 3228., 3238., 3248., 3258., 3268.,
      3278., 3288., 3298., 3308., 3318., 3328., 3338., 3348., 3358., 3368.,
      3538., 3548., 3558., 3568., 3578., 3588., 3598., 3608., 3618., 3628.,
      3638., 3648., 3658., 3668., 3678., 3688., 3698., 3708., 3718., 3728.,
      3738., 3748., 3758., 3768., 3778., 3788., 3798., 3808., 3978., 3988.,
      3998., 4008., 4018., 4028., 4038., 4048., 4058., 4068., 4078., 4088.,
      4098., 4108., 4118., 4128., 4138., 4148., 4158., 4168., 4178., 4188.,
      4198., 4208., 4218., 4228., 4238., 4248.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31248., 32934., 31344., 33036., 31440., 33138., 31536., 33240., 31632.,
      33342., 31728., 33444., 31824., 33546., 31920., 33648., 44463., 46992.,
      44598., 47136., 44733., 47280., 44868., 47424., 45003., 47568., 45138.,
      47712., 45273., 47856., 45408., 48000., 45543., 48144., 45678., 48288.,
      45813., 48432., 45948., 48576., 28212., 29922., 28296., 30012., 28380.,
      30102., 28464., 30192., 28548., 30282., 28632., 30372., 28716., 30462.,
      28800., 30552., 35472., 37422., 35568., 37524., 35664., 37626., 35760.,
      37728., 35856., 37830., 35952., 37932., 36048., 38034., 36144., 38136.,
      50403., 53328., 50538., 53472., 50673., 53616., 50808., 53760., 50943.,
      53904., 51078., 54048., 51213., 54192., 51348., 54336., 51483., 54480.,
      51618., 54624., 51753., 54768., 51888., 54912., 31908., 33882., 31992.,
      33972., 32076., 34062., 32160., 34152., 32244., 34242., 32328., 34332.,
      32412., 34422., 32496., 34512., 39848., 42096., 39952., 42208., 40056.,
      42320., 40160., 42432., 40264., 42544., 40368., 42656., 40472., 42768.,
      40576., 42880., 56560., 59932., 56704., 60088., 56848., 60244., 56992.,
      60400., 57136., 60556., 57280., 60712., 57424., 60868., 57568., 61024.,
      57712., 61180., 57856., 61336., 58000., 61492., 58144., 61648., 35704.,
      37984., 35792., 38080., 35880., 38176., 35968., 38272., 36056., 38368.,
      36144., 38464., 36232., 38560., 36320., 38656., 44424., 47024., 44528.,
      47136., 44632., 47248., 44736., 47360., 44840., 47472., 44944., 47584.,
      45048., 47696., 45152., 47808., 62896., 66796., 63040., 66952., 63184.,
      67108., 63328., 67264., 63472., 67420., 63616., 67576., 63760., 67732.,
      63904., 67888., 64048., 68044., 64192., 68200., 64336., 68356., 64480.,
      68512., 39576., 42208., 39664., 42304., 39752., 42400., 39840., 42496.,
      39928., 42592., 40016., 42688., 40104., 42784., 40192., 42880., 21132.,
      22818., 21192., 22884., 21252., 22950., 21312., 23016., 21372., 23082.,
      21432., 23148., 21492., 23214., 21552., 23280., 29289., 31818., 29370.,
      31908., 29451., 31998., 29532., 32088., 29613., 32178., 29694., 32268.,
      29775., 32358., 29856., 32448., 29937., 32538., 30018., 32628., 30099.,
      32718., 30180., 32808., 17952., 19662., 18000., 19716., 18048., 19770.,
      18096., 19824., 18144., 19878., 18192., 19932., 18240., 19986., 18288.,
      20040., 23772., 25722., 23832., 25788., 23892., 25854., 23952., 25920.,
      24012., 25986., 24072., 26052., 24132., 26118., 24192., 26184., 32853.,
      35778., 32934., 35868., 33015., 35958., 33096., 36048., 33177., 36138.,
      33258., 36228., 33339., 36318., 33420., 36408., 33501., 36498., 33582.,
      36588., 33663., 36678., 33744., 36768., 20064., 22038., 20112., 22092.,
      20160., 22146., 20208., 22200., 20256., 22254., 20304., 22308., 20352.,
      22362., 20400., 22416., 26412., 28626., 26472., 28692., 26532., 28758.,
      26592., 28824., 26652., 28890., 26712., 28956., 26772., 29022., 26832.,
      29088., 36417., 39738., 36498., 39828., 36579., 39918., 36660., 40008.,
      36741., 40098., 36822., 40188., 36903., 40278., 36984., 40368., 37065.,
      40458., 37146., 40548., 37227., 40638., 37308., 40728., 22176., 24414.,
      22224., 24468., 22272., 24522., 22320., 24576., 22368., 24630., 22416.,
      24684., 22464., 24738., 22512., 24792.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2288., 2676., 2304., 2696., 2320., 2716., 2336., 2736., 2352., 2756.,
      2368., 2776., 2384., 2796., 2400., 2816., 2416., 2836., 2432., 2856.,
      2448., 2876., 2464., 2896., 2480., 2916., 2496., 2936., 2512., 2956.,
      2528., 2976., 2544., 2996., 2560., 3016., 2576., 3036., 2592., 3056.,
      2608., 3076., 2624., 3096., 2640., 3116., 2656., 3136., 2672., 3156.,
      2688., 3176., 2704., 3196., 2720., 3216., 2992., 3556., 3008., 3576.,
      3024., 3596., 3040., 3616., 3056., 3636., 3072., 3656., 3088., 3676.,
      3104., 3696., 3120., 3716., 3136., 3736., 3152., 3756., 3168., 3776.,
      3184., 3796., 3200., 3816., 3216., 3836., 3232., 3856., 3248., 3876.,
      3264., 3896., 3280., 3916., 3296., 3936., 3312., 3956., 3328., 3976.,
      3344., 3996., 3360., 4016., 3376., 4036., 3392., 4056., 3408., 4076.,
      3424., 4096., 3696., 4436., 3712., 4456., 3728., 4476., 3744., 4496.,
      3760., 4516., 3776., 4536., 3792., 4556., 3808., 4576., 3824., 4596.,
      3840., 4616., 3856., 4636., 3872., 4656., 3888., 4676., 3904., 4696.,
      3920., 4716., 3936., 4736., 3952., 4756., 3968., 4776., 3984., 4796.,
      4000., 4816., 4016., 4836., 4032., 4856., 4048., 4876., 4064., 4896.,
      4080., 4916., 4096., 4936., 4112., 4956., 4128., 4976., 4400., 5316.,
      4416., 5336., 4432., 5356., 4448., 5376., 4464., 5396., 4480., 5416.,
      4496., 5436., 4512., 5456., 4528., 5476., 4544., 5496., 4560., 5516.,
      4576., 5536., 4592., 5556., 4608., 5576., 4624., 5596., 4640., 5616.,
      4656., 5636., 4672., 5656., 4688., 5676., 4704., 5696., 4720., 5716.,
      4736., 5736., 4752., 5756., 4768., 5776., 4784., 5796., 4800., 5816.,
      4816., 5836., 4832., 5856., 5104., 6196., 5120., 6216., 5136., 6236.,
      5152., 6256., 5168., 6276., 5184., 6296., 5200., 6316., 5216., 6336.,
      5232., 6356., 5248., 6376., 5264., 6396., 5280., 6416., 5296., 6436.,
      5312., 6456., 5328., 6476., 5344., 6496., 5360., 6516., 5376., 6536.,
      5392., 6556., 5408., 6576., 5424., 6596., 5440., 6616., 5456., 6636.,
      5472., 6656., 5488., 6676., 5504., 6696., 5520., 6716., 5536., 6736.,
      5808., 7076., 5824., 7096., 5840., 7116., 5856., 7136., 5872., 7156.,
      5888., 7176., 5904., 7196., 5920., 7216., 5936., 7236., 5952., 7256.,
      5968., 7276., 5984., 7296., 6000., 7316., 6016., 7336., 6032., 7356.,
      6048., 7376., 6064., 7396., 6080., 7416., 6096., 7436., 6112., 7456.,
      6128., 7476., 6144., 7496., 6160., 7516., 6176., 7536., 6192., 7556.,
      6208., 7576., 6224., 7596., 6240., 7616., 6512., 7956., 6528., 7976.,
      6544., 7996., 6560., 8016., 6576., 8036., 6592., 8056., 6608., 8076.,
      6624., 8096., 6640., 8116., 6656., 8136., 6672., 8156., 6688., 8176.,
      6704., 8196., 6720., 8216., 6736., 8236., 6752., 8256., 6768., 8276.,
      6784., 8296., 6800., 8316., 6816., 8336., 6832., 8356., 6848., 8376.,
      6864., 8396., 6880., 8416., 6896., 8436., 6912., 8456., 6928., 8476.,
      6944., 8496.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      60810.,  62496.,  64182.,  65868.,  60996.,  62688.,  64380.,  66072.,
      61182.,  62880.,  64578.,  66276.,  61368.,  63072.,  64776.,  66480.,
      61554.,  63264.,  64974.,  66684.,  61740.,  63456.,  65172.,  66888.,
      61926.,  63648.,  65370.,  67092.,  62112.,  63840.,  65568.,  67296.,
      86397.,  88926.,  91455.,  93984.,  86658.,  89196.,  91734.,  94272.,
      86919.,  89466.,  92013.,  94560.,  87180.,  89736.,  92292.,  94848.,
      87441.,  90006.,  92571.,  95136.,  87702.,  90276.,  92850.,  95424.,
      87963.,  90546.,  93129.,  95712.,  88224.,  90816.,  93408.,  96000.,
      88485.,  91086.,  93687.,  96288.,  88746.,  91356.,  93966.,  96576.,
      89007.,  91626.,  94245.,  96864.,  89268.,  91896.,  94524.,  97152.,
      54714.,  56424.,  58134.,  59844.,  54876.,  56592.,  58308.,  60024.,
      55038.,  56760.,  58482.,  60204.,  55200.,  56928.,  58656.,  60384.,
      55362.,  57096.,  58830.,  60564.,  55524.,  57264.,  59004.,  60744.,
      55686.,  57432.,  59178.,  60924.,  55848.,  57600.,  59352.,  61104.,
      68994.,  70944.,  72894.,  74844.,  69180.,  71136.,  73092.,  75048.,
      69366.,  71328.,  73290.,  75252.,  69552.,  71520.,  73488.,  75456.,
      69738.,  71712.,  73686.,  75660.,  69924.,  71904.,  73884.,  75864.,
      70110.,  72096.,  74082.,  76068.,  70296.,  72288.,  74280.,  76272.,
      97881.,  100806., 103731., 106656., 98142.,  101076., 104010., 106944.,
      98403.,  101346., 104289., 107232., 98664.,  101616., 104568., 107520.,
      98925.,  101886., 104847., 107808., 99186.,  102156., 105126., 108096.,
      99447.,  102426., 105405., 108384., 99708.,  102696., 105684., 108672.,
      99969.,  102966., 105963., 108960., 100230., 103236., 106242., 109248.,
      100491., 103506., 106521., 109536., 100752., 103776., 106800., 109824.,
      61842.,  63816.,  65790.,  67764.,  62004.,  63984.,  65964.,  67944.,
      62166.,  64152.,  66138.,  68124.,  62328.,  64320.,  66312.,  68304.,
      62490.,  64488.,  66486.,  68484.,  62652.,  64656.,  66660.,  68664.,
      62814.,  64824.,  66834.,  68844.,  62976.,  64992.,  67008.,  69024.,
      77448.,  79696.,  81944.,  84192.,  77648.,  79904.,  82160.,  84416.,
      77848.,  80112.,  82376.,  84640.,  78048.,  80320.,  82592.,  84864.,
      78248.,  80528.,  82808.,  85088.,  78448.,  80736.,  83024.,  85312.,
      78648.,  80944.,  83240.,  85536.,  78848.,  81152.,  83456.,  85760.,
      109748., 113120., 116492., 119864., 110024., 113408., 116792., 120176.,
      110300., 113696., 117092., 120488., 110576., 113984., 117392., 120800.,
      110852., 114272., 117692., 121112., 111128., 114560., 117992., 121424.,
      111404., 114848., 118292., 121736., 111680., 115136., 118592., 122048.,
      111956., 115424., 118892., 122360., 112232., 115712., 119192., 122672.,
      112508., 116000., 119492., 122984., 112784., 116288., 119792., 123296.,
      69128.,  71408.,  73688.,  75968.,  69296.,  71584.,  73872.,  76160.,
      69464.,  71760.,  74056.,  76352.,  69632.,  71936.,  74240.,  76544.,
      69800.,  72112.,  74424.,  76736.,  69968.,  72288.,  74608.,  76928.,
      70136.,  72464.,  74792.,  77120.,  70304.,  72640.,  74976.,  77312.,
      86248.,  88848.,  91448.,  94048.,  86448.,  89056.,  91664.,  94272.,
      86648.,  89264.,  91880.,  94496.,  86848.,  89472.,  92096.,  94720.,
      87048.,  89680.,  92312.,  94944.,  87248.,  89888.,  92528.,  95168.,
      87448.,  90096.,  92744.,  95392.,  87648.,  90304.,  92960.,  95616.,
      121892., 125792., 129692., 133592., 122168., 126080., 129992., 133904.,
      122444., 126368., 130292., 134216., 122720., 126656., 130592., 134528.,
      122996., 126944., 130892., 134840., 123272., 127232., 131192., 135152.,
      123548., 127520., 131492., 135464., 123824., 127808., 131792., 135776.,
      124100., 128096., 132092., 136088., 124376., 128384., 132392., 136400.,
      124652., 128672., 132692., 136712., 124928., 128960., 132992., 137024.,
      76520.,  79152.,  81784.,  84416.,  76688.,  79328.,  81968.,  84608.,
      76856.,  79504.,  82152.,  84800.,  77024.,  79680.,  82336.,  84992.,
      77192.,  79856.,  82520.,  85184.,  77360.,  80032.,  82704.,  85376.,
      77528.,  80208.,  82888.,  85568.,  77696.,  80384.,  83072.,  85760.,
      40578.,  42264.,  43950.,  45636.,  40692.,  42384.,  44076.,  45768.,
      40806.,  42504.,  44202.,  45900.,  40920.,  42624.,  44328.,  46032.,
      41034.,  42744.,  44454.,  46164.,  41148.,  42864.,  44580.,  46296.,
      41262.,  42984.,  44706.,  46428.,  41376.,  43104.,  44832.,  46560.,
      56049.,  58578.,  61107.,  63636.,  56202.,  58740.,  61278.,  63816.,
      56355.,  58902.,  61449.,  63996.,  56508.,  59064.,  61620.,  64176.,
      56661.,  59226.,  61791.,  64356.,  56814.,  59388.,  61962.,  64536.,
      56967.,  59550.,  62133.,  64716.,  57120.,  59712.,  62304.,  64896.,
      57273.,  59874.,  62475.,  65076.,  57426.,  60036.,  62646.,  65256.,
      57579.,  60198.,  62817.,  65436.,  57732.,  60360.,  62988.,  65616.,
      34194.,  35904.,  37614.,  39324.,  34284.,  36000.,  37716.,  39432.,
      34374.,  36096.,  37818.,  39540.,  34464.,  36192.,  37920.,  39648.,
      34554.,  36288.,  38022.,  39756.,  34644.,  36384.,  38124.,  39864.,
      34734.,  36480.,  38226.,  39972.,  34824.,  36576.,  38328.,  40080.,
      45594.,  47544.,  49494.,  51444.,  45708.,  47664.,  49620.,  51576.,
      45822.,  47784.,  49746.,  51708.,  45936.,  47904.,  49872.,  51840.,
      46050.,  48024.,  49998.,  51972.,  46164.,  48144.,  50124.,  52104.,
      46278.,  48264.,  50250.,  52236.,  46392.,  48384.,  50376.,  52368.,
      62781.,  65706.,  68631.,  71556.,  62934.,  65868.,  68802.,  71736.,
      63087.,  66030.,  68973.,  71916.,  63240.,  66192.,  69144.,  72096.,
      63393.,  66354.,  69315.,  72276.,  63546.,  66516.,  69486.,  72456.,
      63699.,  66678.,  69657.,  72636.,  63852.,  66840.,  69828.,  72816.,
      64005.,  67002.,  69999.,  72996.,  64158.,  67164.,  70170.,  73176.,
      64311.,  67326.,  70341.,  73356.,  64464.,  67488.,  70512.,  73536.,
      38154.,  40128.,  42102.,  44076.,  38244.,  40224.,  42204.,  44184.,
      38334.,  40320.,  42306.,  44292.,  38424.,  40416.,  42408.,  44400.,
      38514.,  40512.,  42510.,  44508.,  38604.,  40608.,  42612.,  44616.,
      38694.,  40704.,  42714.,  44724.,  38784.,  40800.,  42816.,  44832.,
      50610.,  52824.,  55038.,  57252.,  50724.,  52944.,  55164.,  57384.,
      50838.,  53064.,  55290.,  57516.,  50952.,  53184.,  55416.,  57648.,
      51066.,  53304.,  55542.,  57780.,  51180.,  53424.,  55668.,  57912.,
      51294.,  53544.,  55794.,  58044.,  51408.,  53664.,  55920.,  58176.,
      69513.,  72834.,  76155.,  79476.,  69666.,  72996.,  76326.,  79656.,
      69819.,  73158.,  76497.,  79836.,  69972.,  73320.,  76668.,  80016.,
      70125.,  73482.,  76839.,  80196.,  70278.,  73644.,  77010.,  80376.,
      70431.,  73806.,  77181.,  80556.,  70584.,  73968.,  77352.,  80736.,
      70737.,  74130.,  77523.,  80916.,  70890.,  74292.,  77694.,  81096.,
      71043.,  74454.,  77865.,  81276.,  71196.,  74616.,  78036.,  81456.,
      42114.,  44352.,  46590.,  48828.,  42204.,  44448.,  46692.,  48936.,
      42294.,  44544.,  46794.,  49044.,  42384.,  44640.,  46896.,  49152.,
      42474.,  44736.,  46998.,  49260.,  42564.,  44832.,  47100.,  49368.,
      42654.,  44928.,  47202.,  49476.,  42744.,  45024.,  47304.,  49584.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4188.,  4576.,  4964.,  5352.,  4216.,  4608.,  5000.,  5392.,  4244.,
      4640.,  5036.,  5432.,  4272.,  4672.,  5072.,  5472.,  4300.,  4704.,
      5108.,  5512.,  4328.,  4736.,  5144.,  5552.,  4356.,  4768.,  5180.,
      5592.,  4384.,  4800.,  5216.,  5632.,  4412.,  4832.,  5252.,  5672.,
      4440.,  4864.,  5288.,  5712.,  4468.,  4896.,  5324.,  5752.,  4496.,
      4928.,  5360.,  5792.,  4524.,  4960.,  5396.,  5832.,  4552.,  4992.,
      5432.,  5872.,  4580.,  5024.,  5468.,  5912.,  4608.,  5056.,  5504.,
      5952.,  4636.,  5088.,  5540.,  5992.,  4664.,  5120.,  5576.,  6032.,
      4692.,  5152.,  5612.,  6072.,  4720.,  5184.,  5648.,  6112.,  4748.,
      5216.,  5684.,  6152.,  4776.,  5248.,  5720.,  6192.,  4804.,  5280.,
      5756.,  6232.,  4832.,  5312.,  5792.,  6272.,  4860.,  5344.,  5828.,
      6312.,  4888.,  5376.,  5864.,  6352.,  4916.,  5408.,  5900.,  6392.,
      4944.,  5440.,  5936.,  6432.,  5420.,  5984.,  6548.,  7112.,  5448.,
      6016.,  6584.,  7152.,  5476.,  6048.,  6620.,  7192.,  5504.,  6080.,
      6656.,  7232.,  5532.,  6112.,  6692.,  7272.,  5560.,  6144.,  6728.,
      7312.,  5588.,  6176.,  6764.,  7352.,  5616.,  6208.,  6800.,  7392.,
      5644.,  6240.,  6836.,  7432.,  5672.,  6272.,  6872.,  7472.,  5700.,
      6304.,  6908.,  7512.,  5728.,  6336.,  6944.,  7552.,  5756.,  6368.,
      6980.,  7592.,  5784.,  6400.,  7016.,  7632.,  5812.,  6432.,  7052.,
      7672.,  5840.,  6464.,  7088.,  7712.,  5868.,  6496.,  7124.,  7752.,
      5896.,  6528.,  7160.,  7792.,  5924.,  6560.,  7196.,  7832.,  5952.,
      6592.,  7232.,  7872.,  5980.,  6624.,  7268.,  7912.,  6008.,  6656.,
      7304.,  7952.,  6036.,  6688.,  7340.,  7992.,  6064.,  6720.,  7376.,
      8032.,  6092.,  6752.,  7412.,  8072.,  6120.,  6784.,  7448.,  8112.,
      6148.,  6816.,  7484.,  8152.,  6176.,  6848.,  7520.,  8192.,  6652.,
      7392.,  8132.,  8872.,  6680.,  7424.,  8168.,  8912.,  6708.,  7456.,
      8204.,  8952.,  6736.,  7488.,  8240.,  8992.,  6764.,  7520.,  8276.,
      9032.,  6792.,  7552.,  8312.,  9072.,  6820.,  7584.,  8348.,  9112.,
      6848.,  7616.,  8384.,  9152.,  6876.,  7648.,  8420.,  9192.,  6904.,
      7680.,  8456.,  9232.,  6932.,  7712.,  8492.,  9272.,  6960.,  7744.,
      8528.,  9312.,  6988.,  7776.,  8564.,  9352.,  7016.,  7808.,  8600.,
      9392.,  7044.,  7840.,  8636.,  9432.,  7072.,  7872.,  8672.,  9472.,
      7100.,  7904.,  8708.,  9512.,  7128.,  7936.,  8744.,  9552.,  7156.,
      7968.,  8780.,  9592.,  7184.,  8000.,  8816.,  9632.,  7212.,  8032.,
      8852.,  9672.,  7240.,  8064.,  8888.,  9712.,  7268.,  8096.,  8924.,
      9752.,  7296.,  8128.,  8960.,  9792.,  7324.,  8160.,  8996.,  9832.,
      7352.,  8192.,  9032.,  9872.,  7380.,  8224.,  9068.,  9912.,  7408.,
      8256.,  9104.,  9952.,  7884.,  8800.,  9716.,  10632., 7912.,  8832.,
      9752.,  10672., 7940.,  8864.,  9788.,  10712., 7968.,  8896.,  9824.,
      10752., 7996.,  8928.,  9860.,  10792., 8024.,  8960.,  9896.,  10832.,
      8052.,  8992.,  9932.,  10872., 8080.,  9024.,  9968.,  10912., 8108.,
      9056.,  10004., 10952., 8136.,  9088.,  10040., 10992., 8164.,  9120.,
      10076., 11032., 8192.,  9152.,  10112., 11072., 8220.,  9184.,  10148.,
      11112., 8248.,  9216.,  10184., 11152., 8276.,  9248.,  10220., 11192.,
      8304.,  9280.,  10256., 11232., 8332.,  9312.,  10292., 11272., 8360.,
      9344.,  10328., 11312., 8388.,  9376.,  10364., 11352., 8416.,  9408.,
      10400., 11392., 8444.,  9440.,  10436., 11432., 8472.,  9472.,  10472.,
      11472., 8500.,  9504.,  10508., 11512., 8528.,  9536.,  10544., 11552.,
      8556.,  9568.,  10580., 11592., 8584.,  9600.,  10616., 11632., 8612.,
      9632.,  10652., 11672., 8640.,  9664.,  10688., 11712., 9116.,  10208.,
      11300., 12392., 9144.,  10240., 11336., 12432., 9172.,  10272., 11372.,
      12472., 9200.,  10304., 11408., 12512., 9228.,  10336., 11444., 12552.,
      9256.,  10368., 11480., 12592., 9284.,  10400., 11516., 12632., 9312.,
      10432., 11552., 12672., 9340.,  10464., 11588., 12712., 9368.,  10496.,
      11624., 12752., 9396.,  10528., 11660., 12792., 9424.,  10560., 11696.,
      12832., 9452.,  10592., 11732., 12872., 9480.,  10624., 11768., 12912.,
      9508.,  10656., 11804., 12952., 9536.,  10688., 11840., 12992., 9564.,
      10720., 11876., 13032., 9592.,  10752., 11912., 13072., 9620.,  10784.,
      11948., 13112., 9648.,  10816., 11984., 13152., 9676.,  10848., 12020.,
      13192., 9704.,  10880., 12056., 13232., 9732.,  10912., 12092., 13272.,
      9760.,  10944., 12128., 13312., 9788.,  10976., 12164., 13352., 9816.,
      11008., 12200., 13392., 9844.,  11040., 12236., 13432., 9872.,  11072.,
      12272., 13472., 10348., 11616., 12884., 14152., 10376., 11648., 12920.,
      14192., 10404., 11680., 12956., 14232., 10432., 11712., 12992., 14272.,
      10460., 11744., 13028., 14312., 10488., 11776., 13064., 14352., 10516.,
      11808., 13100., 14392., 10544., 11840., 13136., 14432., 10572., 11872.,
      13172., 14472., 10600., 11904., 13208., 14512., 10628., 11936., 13244.,
      14552., 10656., 11968., 13280., 14592., 10684., 12000., 13316., 14632.,
      10712., 12032., 13352., 14672., 10740., 12064., 13388., 14712., 10768.,
      12096., 13424., 14752., 10796., 12128., 13460., 14792., 10824., 12160.,
      13496., 14832., 10852., 12192., 13532., 14872., 10880., 12224., 13568.,
      14912., 10908., 12256., 13604., 14952., 10936., 12288., 13640., 14992.,
      10964., 12320., 13676., 15032., 10992., 12352., 13712., 15072., 11020.,
      12384., 13748., 15112., 11048., 12416., 13784., 15152., 11076., 12448.,
      13820., 15192., 11104., 12480., 13856., 15232., 11580., 13024., 14468.,
      15912., 11608., 13056., 14504., 15952., 11636., 13088., 14540., 15992.,
      11664., 13120., 14576., 16032., 11692., 13152., 14612., 16072., 11720.,
      13184., 14648., 16112., 11748., 13216., 14684., 16152., 11776., 13248.,
      14720., 16192., 11804., 13280., 14756., 16232., 11832., 13312., 14792.,
      16272., 11860., 13344., 14828., 16312., 11888., 13376., 14864., 16352.,
      11916., 13408., 14900., 16392., 11944., 13440., 14936., 16432., 11972.,
      13472., 14972., 16472., 12000., 13504., 15008., 16512., 12028., 13536.,
      15044., 16552., 12056., 13568., 15080., 16592., 12084., 13600., 15116.,
      16632., 12112., 13632., 15152., 16672., 12140., 13664., 15188., 16712.,
      12168., 13696., 15224., 16752., 12196., 13728., 15260., 16792., 12224.,
      13760., 15296., 16832., 12252., 13792., 15332., 16872., 12280., 13824.,
      15368., 16912., 12308., 13856., 15404., 16952., 12336., 13888., 15440.,
      16992.};
  const std::array<int, 4> in_shape = {{1, 14, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4560., 6432., 6504., 6576., 6648., 4137., 4182., 5172., 7296., 7368.,
      7440., 7512., 4677., 4722., 5816., 8198., 8276., 8354., 8432., 5240.,
      5288., 6488., 9134., 9212., 9290., 9368., 5816., 5864., 3156., 4353.,
      4398., 4443., 4488., 2715., 2742., 3552., 4893., 4938., 4983., 5028.,
      3039., 3066., 3948., 5433., 5478., 5523., 5568., 3363., 3390.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      370.,  380.,  390.,  400.,  410.,  420.,  430.,  490.,  500.,  510.,
      520.,  530.,  540.,  550.,  610.,  620.,  630.,  640.,  650.,  660.,
      670.,  730.,  740.,  750.,  760.,  770.,  780.,  790.,  850.,  860.,
      870.,  880.,  890.,  900.,  910.,  970.,  980.,  990.,  1000., 1010.,
      1020., 1030., 1090., 1100., 1110., 1120., 1130., 1140., 1150.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      8652.,  9120.,  12171., 12864., 12306., 13008., 12441., 13152., 12576.,
      13296., 7800.,  8274.,  7884.,  8364.,  9804.,  10344., 13791., 14592.,
      13926., 14736., 14061., 14880., 14196., 15024., 8808.,  9354.,  8892.,
      9444.,  11008., 11632., 15472., 16396., 15616., 16552., 15760., 16708.,
      15904., 16864., 9848.,  10480., 9936.,  10576., 12256., 12976., 17200.,
      18268., 17344., 18424., 17488., 18580., 17632., 18736., 10904., 11632.,
      10992., 11728., 5844.,  6312.,  8013.,  8706.,  8094.,  8796.,  8175.,
      8886.,  8256.,  8976.,  4956.,  5430.,  5004.,  5484.,  6564.,  7104.,
      8985.,  9786.,  9066.,  9876.,  9147.,  9966.,  9228.,  10056., 5532.,
      6078.,  5580.,  6132.,  7284.,  7896.,  9957.,  10866., 10038., 10956.,
      10119., 11046., 10200., 11136., 6108.,  6726.,  6156.,  6780.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      632.,  740.,  648.,  760.,  664.,  780.,  680.,  800.,  696.,  820.,
      712.,  840.,  728.,  860.,  824.,  980.,  840.,  1000., 856.,  1020.,
      872.,  1040., 888.,  1060., 904.,  1080., 920.,  1100., 1016., 1220.,
      1032., 1240., 1048., 1260., 1064., 1280., 1080., 1300., 1096., 1320.,
      1112., 1340., 1208., 1460., 1224., 1480., 1240., 1500., 1256., 1520.,
      1272., 1540., 1288., 1560., 1304., 1580., 1400., 1700., 1416., 1720.,
      1432., 1740., 1448., 1760., 1464., 1780., 1480., 1800., 1496., 1820.,
      1592., 1940., 1608., 1960., 1624., 1980., 1640., 2000., 1656., 2020.,
      1672., 2040., 1688., 2060., 1784., 2180., 1800., 2200., 1816., 2220.,
      1832., 2240., 1848., 2260., 1864., 2280., 1880., 2300.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16836., 17304., 17772., 18240., 23649., 24342., 25035., 25728., 23910.,
      24612., 25314., 26016., 24171., 24882., 25593., 26304., 24432., 25152.,
      25872., 26592., 15126., 15600., 16074., 16548., 15288., 15768., 16248.,
      16728., 19068., 19608., 20148., 20688., 26781., 27582., 28383., 29184.,
      27042., 27852., 28662., 29472., 27303., 28122., 28941., 29760., 27564.,
      28392., 29220., 30048., 17070., 17616., 18162., 18708., 17232., 17784.,
      18336., 18888., 21392., 22016., 22640., 23264., 30020., 30944., 31868.,
      32792., 30296., 31232., 32168., 33104., 30572., 31520., 32468., 33416.,
      30848., 31808., 32768., 33728., 19064., 19696., 20328., 20960., 19232.,
      19872., 20512., 21152., 23792., 24512., 25232., 25952., 33332., 34400.,
      35468., 36536., 33608., 34688., 35768., 36848., 33884., 34976., 36068.,
      37160., 34160., 35264., 36368., 37472., 21080., 21808., 22536., 23264.,
      21248., 21984., 22720., 23456., 11220., 11688., 12156., 12624., 15333.,
      16026., 16719., 17412., 15486., 16188., 16890., 17592., 15639., 16350.,
      17061., 17772., 15792., 16512., 17232., 17952., 9438.,  9912.,  10386.,
      10860., 9528.,  10008., 10488., 10968., 12588., 13128., 13668., 14208.,
      17169., 17970., 18771., 19572., 17322., 18132., 18942., 19752., 17475.,
      18294., 19113., 19932., 17628., 18456., 19284., 20112., 10518., 11064.,
      11610., 12156., 10608., 11160., 11712., 12264., 13956., 14568., 15180.,
      15792., 19005., 19914., 20823., 21732., 19158., 20076., 20994., 21912.,
      19311., 20238., 21165., 22092., 19464., 20400., 21336., 22272., 11598.,
      12216., 12834., 13452., 11688., 12312., 12936., 13560.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1156., 1264., 1372., 1480., 1184., 1296., 1408., 1520., 1212., 1328.,
      1444., 1560., 1240., 1360., 1480., 1600., 1268., 1392., 1516., 1640.,
      1296., 1424., 1552., 1680., 1324., 1456., 1588., 1720., 1492., 1648.,
      1804., 1960., 1520., 1680., 1840., 2000., 1548., 1712., 1876., 2040.,
      1576., 1744., 1912., 2080., 1604., 1776., 1948., 2120., 1632., 1808.,
      1984., 2160., 1660., 1840., 2020., 2200., 1828., 2032., 2236., 2440.,
      1856., 2064., 2272., 2480., 1884., 2096., 2308., 2520., 1912., 2128.,
      2344., 2560., 1940., 2160., 2380., 2600., 1968., 2192., 2416., 2640.,
      1996., 2224., 2452., 2680., 2164., 2416., 2668., 2920., 2192., 2448.,
      2704., 2960., 2220., 2480., 2740., 3000., 2248., 2512., 2776., 3040.,
      2276., 2544., 2812., 3080., 2304., 2576., 2848., 3120., 2332., 2608.,
      2884., 3160., 2500., 2800., 3100., 3400., 2528., 2832., 3136., 3440.,
      2556., 2864., 3172., 3480., 2584., 2896., 3208., 3520., 2612., 2928.,
      3244., 3560., 2640., 2960., 3280., 3600., 2668., 2992., 3316., 3640.,
      2836., 3184., 3532., 3880., 2864., 3216., 3568., 3920., 2892., 3248.,
      3604., 3960., 2920., 3280., 3640., 4000., 2948., 3312., 3676., 4040.,
      2976., 3344., 3712., 4080., 3004., 3376., 3748., 4120., 3172., 3568.,
      3964., 4360., 3200., 3600., 4000., 4400., 3228., 3632., 4036., 4440.,
      3256., 3664., 4072., 4480., 3284., 3696., 4108., 4520., 3312., 3728.,
      4144., 4560., 3340., 3760., 4180., 4600.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9069.,  9120.,  12792., 12864., 12936., 13008., 13080., 13152., 13224.,
      13296., 8229.,  8274.,  8319.,  8364.,  10293., 10344., 14520., 14592.,
      14664., 14736., 14808., 14880., 14952., 15024., 9309.,  9354.,  9399.,
      9444.,  11576., 11632., 16318., 16396., 16474., 16552., 16630., 16708.,
      16786., 16864., 10432., 10480., 10528., 10576., 12920., 12976., 18190.,
      18268., 18346., 18424., 18502., 18580., 18658., 18736., 11584., 11632.,
      11680., 11728., 6279.,  6312.,  8661.,  8706.,  8751.,  8796.,  8841.,
      8886.,  8931.,  8976.,  5403.,  5430.,  5457.,  5484.,  7071.,  7104.,
      9741.,  9786.,  9831.,  9876.,  9921.,  9966.,  10011., 10056., 6051.,
      6078.,  6105.,  6132.,  7863.,  7896.,  10821., 10866., 10911., 10956.,
      11001., 11046., 11091., 11136., 6699.,  6726.,  6753.,  6780.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      730.,  740.,  750.,  760.,  770.,  780.,  790.,  800.,  810.,  820.,
      830.,  840.,  850.,  860.,  970.,  980.,  990.,  1000., 1010., 1020.,
      1030., 1040., 1050., 1060., 1070., 1080., 1090., 1100., 1210., 1220.,
      1230., 1240., 1250., 1260., 1270., 1280., 1290., 1300., 1310., 1320.,
      1330., 1340., 1450., 1460., 1470., 1480., 1490., 1500., 1510., 1520.,
      1530., 1540., 1550., 1560., 1570., 1580., 1690., 1700., 1710., 1720.,
      1730., 1740., 1750., 1760., 1770., 1780., 1790., 1800., 1810., 1820.,
      1930., 1940., 1950., 1960., 1970., 1980., 1990., 2000., 2010., 2020.,
      2030., 2040., 2050., 2060., 2170., 2180., 2190., 2200., 2210., 2220.,
      2230., 2240., 2250., 2260., 2270., 2280., 2290., 2300.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17208., 18138., 17304., 18240., 24207., 25584., 24342., 25728., 24477.,
      25872., 24612., 26016., 24747., 26160., 24882., 26304., 25017., 26448.,
      25152., 26592., 15516., 16458., 15600., 16548., 15684., 16638., 15768.,
      16728., 19512., 20586., 19608., 20688., 27447., 29040., 27582., 29184.,
      27717., 29328., 27852., 29472., 27987., 29616., 28122., 29760., 28257.,
      29904., 28392., 30048., 17532., 18618., 17616., 18708., 17700., 18798.,
      17784., 18888., 21912., 23152., 22016., 23264., 30800., 32636., 30944.,
      32792., 31088., 32948., 31232., 33104., 31376., 33260., 31520., 33416.,
      31664., 33572., 31808., 33728., 19608., 20864., 19696., 20960., 19784.,
      21056., 19872., 21152., 24408., 25840., 24512., 25952., 34256., 36380.,
      34400., 36536., 34544., 36692., 34688., 36848., 34832., 37004., 34976.,
      37160., 35120., 37316., 35264., 37472., 21720., 23168., 21808., 23264.,
      21896., 23360., 21984., 23456., 11628., 12558., 11688., 12624., 15945.,
      17322., 16026., 17412., 16107., 17502., 16188., 17592., 16269., 17682.,
      16350., 17772., 16431., 17862., 16512., 17952., 9864.,  10806., 9912.,
      10860., 9960.,  10914., 10008., 10968., 13068., 14142., 13128., 14208.,
      17889., 19482., 17970., 19572., 18051., 19662., 18132., 19752., 18213.,
      19842., 18294., 19932., 18375., 20022., 18456., 20112., 11016., 12102.,
      11064., 12156., 11112., 12210., 11160., 12264., 14508., 15726., 14568.,
      15792., 19833., 21642., 19914., 21732., 19995., 21822., 20076., 21912.,
      20157., 22002., 20238., 22092., 20319., 22182., 20400., 22272., 12168.,
      13398., 12216., 13452., 12264., 13506., 12312., 13560.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1248., 1460., 1264., 1480., 1280., 1500., 1296., 1520., 1312., 1540.,
      1328., 1560., 1344., 1580., 1360., 1600., 1376., 1620., 1392., 1640.,
      1408., 1660., 1424., 1680., 1440., 1700., 1456., 1720., 1632., 1940.,
      1648., 1960., 1664., 1980., 1680., 2000., 1696., 2020., 1712., 2040.,
      1728., 2060., 1744., 2080., 1760., 2100., 1776., 2120., 1792., 2140.,
      1808., 2160., 1824., 2180., 1840., 2200., 2016., 2420., 2032., 2440.,
      2048., 2460., 2064., 2480., 2080., 2500., 2096., 2520., 2112., 2540.,
      2128., 2560., 2144., 2580., 2160., 2600., 2176., 2620., 2192., 2640.,
      2208., 2660., 2224., 2680., 2400., 2900., 2416., 2920., 2432., 2940.,
      2448., 2960., 2464., 2980., 2480., 3000., 2496., 3020., 2512., 3040.,
      2528., 3060., 2544., 3080., 2560., 3100., 2576., 3120., 2592., 3140.,
      2608., 3160., 2784., 3380., 2800., 3400., 2816., 3420., 2832., 3440.,
      2848., 3460., 2864., 3480., 2880., 3500., 2896., 3520., 2912., 3540.,
      2928., 3560., 2944., 3580., 2960., 3600., 2976., 3620., 2992., 3640.,
      3168., 3860., 3184., 3880., 3200., 3900., 3216., 3920., 3232., 3940.,
      3248., 3960., 3264., 3980., 3280., 4000., 3296., 4020., 3312., 4040.,
      3328., 4060., 3344., 4080., 3360., 4100., 3376., 4120., 3552., 4340.,
      3568., 4360., 3584., 4380., 3600., 4400., 3616., 4420., 3632., 4440.,
      3648., 4460., 3664., 4480., 3680., 4500., 3696., 4520., 3712., 4540.,
      3728., 4560., 3744., 4580., 3760., 4600.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33486., 34416., 35346., 36276., 33672., 34608., 35544., 36480., 47037.,
      48414., 49791., 51168., 47298., 48684., 50070., 51456., 47559., 48954.,
      50349., 51744., 47820., 49224., 50628., 52032., 48081., 49494., 50907.,
      52320., 48342., 49764., 51186., 52608., 48603., 50034., 51465., 52896.,
      48864., 50304., 51744., 53184., 30090., 31032., 31974., 32916., 30252.,
      31200., 32148., 33096., 30414., 31368., 32322., 33276., 30576., 31536.,
      32496., 33456., 37950., 39024., 40098., 41172., 38136., 39216., 40296.,
      41376., 53301., 54894., 56487., 58080., 53562., 55164., 56766., 58368.,
      53823., 55434., 57045., 58656., 54084., 55704., 57324., 58944., 54345.,
      55974., 57603., 59232., 54606., 56244., 57882., 59520., 54867., 56514.,
      58161., 59808., 55128., 56784., 58440., 60096., 33978., 35064., 36150.,
      37236., 34140., 35232., 36324., 37416., 34302., 35400., 36498., 37596.,
      34464., 35568., 36672., 37776., 42584., 43824., 45064., 46304., 42784.,
      44032., 45280., 46528., 59764., 61600., 63436., 65272., 60040., 61888.,
      63736., 65584., 60316., 62176., 64036., 65896., 60592., 62464., 64336.,
      66208., 60868., 62752., 64636., 66520., 61144., 63040., 64936., 66832.,
      61420., 63328., 65236., 67144., 61696., 63616., 65536., 67456., 37960.,
      39216., 40472., 41728., 38128., 39392., 40656., 41920., 38296., 39568.,
      40840., 42112., 38464., 39744., 41024., 42304., 47384., 48816., 50248.,
      51680., 47584., 49024., 50464., 51904., 66388., 68512., 70636., 72760.,
      66664., 68800., 70936., 73072., 66940., 69088., 71236., 73384., 67216.,
      69376., 71536., 73696., 67492., 69664., 71836., 74008., 67768., 69952.,
      72136., 74320., 68044., 70240., 72436., 74632., 68320., 70528., 72736.,
      74944., 41992., 43440., 44888., 46336., 42160., 43616., 45072., 46528.,
      42328., 43792., 45256., 46720., 42496., 43968., 45440., 46912., 22326.,
      23256., 24186., 25116., 22440., 23376., 24312., 25248., 30513., 31890.,
      33267., 34644., 30666., 32052., 33438., 34824., 30819., 32214., 33609.,
      35004., 30972., 32376., 33780., 35184., 31125., 32538., 33951., 35364.,
      31278., 32700., 34122., 35544., 31431., 32862., 34293., 35724., 31584.,
      33024., 34464., 35904., 18786., 19728., 20670., 21612., 18876., 19824.,
      20772., 21720., 18966., 19920., 20874., 21828., 19056., 20016., 20976.,
      21936., 25062., 26136., 27210., 28284., 25176., 26256., 27336., 28416.,
      34185., 35778., 37371., 38964., 34338., 35940., 37542., 39144., 34491.,
      36102., 37713., 39324., 34644., 36264., 37884., 39504., 34797., 36426.,
      38055., 39684., 34950., 36588., 38226., 39864., 35103., 36750., 38397.,
      40044., 35256., 36912., 38568., 40224., 20946., 22032., 23118., 24204.,
      21036., 22128., 23220., 24312., 21126., 22224., 23322., 24420., 21216.,
      22320., 23424., 24528., 27798., 29016., 30234., 31452., 27912., 29136.,
      30360., 31584., 37857., 39666., 41475., 43284., 38010., 39828., 41646.,
      43464., 38163., 39990., 41817., 43644., 38316., 40152., 41988., 43824.,
      38469., 40314., 42159., 44004., 38622., 40476., 42330., 44184., 38775.,
      40638., 42501., 44364., 38928., 40800., 42672., 44544., 23106., 24336.,
      25566., 26796., 23196., 24432., 25668., 26904., 23286., 24528., 25770.,
      27012., 23376., 24624., 25872., 27120.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2284., 2496., 2708., 2920., 2312., 2528., 2744., 2960., 2340., 2560.,
      2780., 3000., 2368., 2592., 2816., 3040., 2396., 2624., 2852., 3080.,
      2424., 2656., 2888., 3120., 2452., 2688., 2924., 3160., 2480., 2720.,
      2960., 3200., 2508., 2752., 2996., 3240., 2536., 2784., 3032., 3280.,
      2564., 2816., 3068., 3320., 2592., 2848., 3104., 3360., 2620., 2880.,
      3140., 3400., 2648., 2912., 3176., 3440., 2956., 3264., 3572., 3880.,
      2984., 3296., 3608., 3920., 3012., 3328., 3644., 3960., 3040., 3360.,
      3680., 4000., 3068., 3392., 3716., 4040., 3096., 3424., 3752., 4080.,
      3124., 3456., 3788., 4120., 3152., 3488., 3824., 4160., 3180., 3520.,
      3860., 4200., 3208., 3552., 3896., 4240., 3236., 3584., 3932., 4280.,
      3264., 3616., 3968., 4320., 3292., 3648., 4004., 4360., 3320., 3680.,
      4040., 4400., 3628., 4032., 4436., 4840., 3656., 4064., 4472., 4880.,
      3684., 4096., 4508., 4920., 3712., 4128., 4544., 4960., 3740., 4160.,
      4580., 5000., 3768., 4192., 4616., 5040., 3796., 4224., 4652., 5080.,
      3824., 4256., 4688., 5120., 3852., 4288., 4724., 5160., 3880., 4320.,
      4760., 5200., 3908., 4352., 4796., 5240., 3936., 4384., 4832., 5280.,
      3964., 4416., 4868., 5320., 3992., 4448., 4904., 5360., 4300., 4800.,
      5300., 5800., 4328., 4832., 5336., 5840., 4356., 4864., 5372., 5880.,
      4384., 4896., 5408., 5920., 4412., 4928., 5444., 5960., 4440., 4960.,
      5480., 6000., 4468., 4992., 5516., 6040., 4496., 5024., 5552., 6080.,
      4524., 5056., 5588., 6120., 4552., 5088., 5624., 6160., 4580., 5120.,
      5660., 6200., 4608., 5152., 5696., 6240., 4636., 5184., 5732., 6280.,
      4664., 5216., 5768., 6320., 4972., 5568., 6164., 6760., 5000., 5600.,
      6200., 6800., 5028., 5632., 6236., 6840., 5056., 5664., 6272., 6880.,
      5084., 5696., 6308., 6920., 5112., 5728., 6344., 6960., 5140., 5760.,
      6380., 7000., 5168., 5792., 6416., 7040., 5196., 5824., 6452., 7080.,
      5224., 5856., 6488., 7120., 5252., 5888., 6524., 7160., 5280., 5920.,
      6560., 7200., 5308., 5952., 6596., 7240., 5336., 5984., 6632., 7280.,
      5644., 6336., 7028., 7720., 5672., 6368., 7064., 7760., 5700., 6400.,
      7100., 7800., 5728., 6432., 7136., 7840., 5756., 6464., 7172., 7880.,
      5784., 6496., 7208., 7920., 5812., 6528., 7244., 7960., 5840., 6560.,
      7280., 8000., 5868., 6592., 7316., 8040., 5896., 6624., 7352., 8080.,
      5924., 6656., 7388., 8120., 5952., 6688., 7424., 8160., 5980., 6720.,
      7460., 8200., 6008., 6752., 7496., 8240., 6316., 7104., 7892., 8680.,
      6344., 7136., 7928., 8720., 6372., 7168., 7964., 8760., 6400., 7200.,
      8000., 8800., 6428., 7232., 8036., 8840., 6456., 7264., 8072., 8880.,
      6484., 7296., 8108., 8920., 6512., 7328., 8144., 8960., 6540., 7360.,
      8180., 9000., 6568., 7392., 8216., 9040., 6596., 7424., 8252., 9080.,
      6624., 7456., 8288., 9120., 6652., 7488., 8324., 9160., 6680., 7520.,
      8360., 9200.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18087., 18138., 18189., 18240., 25512., 25584., 25656., 25728., 25800.,
      25872., 25944., 26016., 26088., 26160., 26232., 26304., 26376., 26448.,
      26520., 26592., 16413., 16458., 16503., 16548., 16593., 16638., 16683.,
      16728., 20535., 20586., 20637., 20688., 28968., 29040., 29112., 29184.,
      29256., 29328., 29400., 29472., 29544., 29616., 29688., 29760., 29832.,
      29904., 29976., 30048., 18573., 18618., 18663., 18708., 18753., 18798.,
      18843., 18888., 23096., 23152., 23208., 23264., 32558., 32636., 32714.,
      32792., 32870., 32948., 33026., 33104., 33182., 33260., 33338., 33416.,
      33494., 33572., 33650., 33728., 20816., 20864., 20912., 20960., 21008.,
      21056., 21104., 21152., 25784., 25840., 25896., 25952., 36302., 36380.,
      36458., 36536., 36614., 36692., 36770., 36848., 36926., 37004., 37082.,
      37160., 37238., 37316., 37394., 37472., 23120., 23168., 23216., 23264.,
      23312., 23360., 23408., 23456., 12525., 12558., 12591., 12624., 17277.,
      17322., 17367., 17412., 17457., 17502., 17547., 17592., 17637., 17682.,
      17727., 17772., 17817., 17862., 17907., 17952., 10779., 10806., 10833.,
      10860., 10887., 10914., 10941., 10968., 14109., 14142., 14175., 14208.,
      19437., 19482., 19527., 19572., 19617., 19662., 19707., 19752., 19797.,
      19842., 19887., 19932., 19977., 20022., 20067., 20112., 12075., 12102.,
      12129., 12156., 12183., 12210., 12237., 12264., 15693., 15726., 15759.,
      15792., 21597., 21642., 21687., 21732., 21777., 21822., 21867., 21912.,
      21957., 22002., 22047., 22092., 22137., 22182., 22227., 22272., 13371.,
      13398., 13425., 13452., 13479., 13506., 13533., 13560.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1450., 1460., 1470., 1480., 1490., 1500., 1510., 1520., 1530., 1540.,
      1550., 1560., 1570., 1580., 1590., 1600., 1610., 1620., 1630., 1640.,
      1650., 1660., 1670., 1680., 1690., 1700., 1710., 1720., 1930., 1940.,
      1950., 1960., 1970., 1980., 1990., 2000., 2010., 2020., 2030., 2040.,
      2050., 2060., 2070., 2080., 2090., 2100., 2110., 2120., 2130., 2140.,
      2150., 2160., 2170., 2180., 2190., 2200., 2410., 2420., 2430., 2440.,
      2450., 2460., 2470., 2480., 2490., 2500., 2510., 2520., 2530., 2540.,
      2550., 2560., 2570., 2580., 2590., 2600., 2610., 2620., 2630., 2640.,
      2650., 2660., 2670., 2680., 2890., 2900., 2910., 2920., 2930., 2940.,
      2950., 2960., 2970., 2980., 2990., 3000., 3010., 3020., 3030., 3040.,
      3050., 3060., 3070., 3080., 3090., 3100., 3110., 3120., 3130., 3140.,
      3150., 3160., 3370., 3380., 3390., 3400., 3410., 3420., 3430., 3440.,
      3450., 3460., 3470., 3480., 3490., 3500., 3510., 3520., 3530., 3540.,
      3550., 3560., 3570., 3580., 3590., 3600., 3610., 3620., 3630., 3640.,
      3850., 3860., 3870., 3880., 3890., 3900., 3910., 3920., 3930., 3940.,
      3950., 3960., 3970., 3980., 3990., 4000., 4010., 4020., 4030., 4040.,
      4050., 4060., 4070., 4080., 4090., 4100., 4110., 4120., 4330., 4340.,
      4350., 4360., 4370., 4380., 4390., 4400., 4410., 4420., 4430., 4440.,
      4450., 4460., 4470., 4480., 4490., 4500., 4510., 4520., 4530., 4540.,
      4550., 4560., 4570., 4580., 4590., 4600.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      34320., 36174., 34416., 36276., 34512., 36378., 34608., 36480., 48279.,
      51024., 48414., 51168., 48549., 51312., 48684., 51456., 48819., 51600.,
      48954., 51744., 49089., 51888., 49224., 52032., 49359., 52176., 49494.,
      52320., 49629., 52464., 49764., 52608., 49899., 52752., 50034., 52896.,
      50169., 53040., 50304., 53184., 30948., 32826., 31032., 32916., 31116.,
      33006., 31200., 33096., 31284., 33186., 31368., 33276., 31452., 33366.,
      31536., 33456., 38928., 41070., 39024., 41172., 39120., 41274., 39216.,
      41376., 54759., 57936., 54894., 58080., 55029., 58224., 55164., 58368.,
      55299., 58512., 55434., 58656., 55569., 58800., 55704., 58944., 55839.,
      59088., 55974., 59232., 56109., 59376., 56244., 59520., 56379., 59664.,
      56514., 59808., 56649., 59952., 56784., 60096., 34980., 37146., 35064.,
      37236., 35148., 37326., 35232., 37416., 35316., 37506., 35400., 37596.,
      35484., 37686., 35568., 37776., 43720., 46192., 43824., 46304., 43928.,
      46416., 44032., 46528., 61456., 65116., 61600., 65272., 61744., 65428.,
      61888., 65584., 62032., 65740., 62176., 65896., 62320., 66052., 62464.,
      66208., 62608., 66364., 62752., 66520., 62896., 66676., 63040., 66832.,
      63184., 66988., 63328., 67144., 63472., 67300., 63616., 67456., 39128.,
      41632., 39216., 41728., 39304., 41824., 39392., 41920., 39480., 42016.,
      39568., 42112., 39656., 42208., 39744., 42304., 48712., 51568., 48816.,
      51680., 48920., 51792., 49024., 51904., 68368., 72604., 68512., 72760.,
      68656., 72916., 68800., 73072., 68944., 73228., 69088., 73384., 69232.,
      73540., 69376., 73696., 69520., 73852., 69664., 74008., 69808., 74164.,
      69952., 74320., 70096., 74476., 70240., 74632., 70384., 74788., 70528.,
      74944., 43352., 46240., 43440., 46336., 43528., 46432., 43616., 46528.,
      43704., 46624., 43792., 46720., 43880., 46816., 43968., 46912., 23196.,
      25050., 23256., 25116., 23316., 25182., 23376., 25248., 31809., 34554.,
      31890., 34644., 31971., 34734., 32052., 34824., 32133., 34914., 32214.,
      35004., 32295., 35094., 32376., 35184., 32457., 35274., 32538., 35364.,
      32619., 35454., 32700., 35544., 32781., 35634., 32862., 35724., 32943.,
      35814., 33024., 35904., 19680., 21558., 19728., 21612., 19776., 21666.,
      19824., 21720., 19872., 21774., 19920., 21828., 19968., 21882., 20016.,
      21936., 26076., 28218., 26136., 28284., 26196., 28350., 26256., 28416.,
      35697., 38874., 35778., 38964., 35859., 39054., 35940., 39144., 36021.,
      39234., 36102., 39324., 36183., 39414., 36264., 39504., 36345., 39594.,
      36426., 39684., 36507., 39774., 36588., 39864., 36669., 39954., 36750.,
      40044., 36831., 40134., 36912., 40224., 21984., 24150., 22032., 24204.,
      22080., 24258., 22128., 24312., 22176., 24366., 22224., 24420., 22272.,
      24474., 22320., 24528., 28956., 31386., 29016., 31452., 29076., 31518.,
      29136., 31584., 39585., 43194., 39666., 43284., 39747., 43374., 39828.,
      43464., 39909., 43554., 39990., 43644., 40071., 43734., 40152., 43824.,
      40233., 43914., 40314., 44004., 40395., 44094., 40476., 44184., 40557.,
      44274., 40638., 44364., 40719., 44454., 40800., 44544., 24288., 26742.,
      24336., 26796., 24384., 26850., 24432., 26904., 24480., 26958., 24528.,
      27012., 24576., 27066., 24624., 27120.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2480., 2900., 2496., 2920., 2512., 2940., 2528., 2960., 2544., 2980.,
      2560., 3000., 2576., 3020., 2592., 3040., 2608., 3060., 2624., 3080.,
      2640., 3100., 2656., 3120., 2672., 3140., 2688., 3160., 2704., 3180.,
      2720., 3200., 2736., 3220., 2752., 3240., 2768., 3260., 2784., 3280.,
      2800., 3300., 2816., 3320., 2832., 3340., 2848., 3360., 2864., 3380.,
      2880., 3400., 2896., 3420., 2912., 3440., 3248., 3860., 3264., 3880.,
      3280., 3900., 3296., 3920., 3312., 3940., 3328., 3960., 3344., 3980.,
      3360., 4000., 3376., 4020., 3392., 4040., 3408., 4060., 3424., 4080.,
      3440., 4100., 3456., 4120., 3472., 4140., 3488., 4160., 3504., 4180.,
      3520., 4200., 3536., 4220., 3552., 4240., 3568., 4260., 3584., 4280.,
      3600., 4300., 3616., 4320., 3632., 4340., 3648., 4360., 3664., 4380.,
      3680., 4400., 4016., 4820., 4032., 4840., 4048., 4860., 4064., 4880.,
      4080., 4900., 4096., 4920., 4112., 4940., 4128., 4960., 4144., 4980.,
      4160., 5000., 4176., 5020., 4192., 5040., 4208., 5060., 4224., 5080.,
      4240., 5100., 4256., 5120., 4272., 5140., 4288., 5160., 4304., 5180.,
      4320., 5200., 4336., 5220., 4352., 5240., 4368., 5260., 4384., 5280.,
      4400., 5300., 4416., 5320., 4432., 5340., 4448., 5360., 4784., 5780.,
      4800., 5800., 4816., 5820., 4832., 5840., 4848., 5860., 4864., 5880.,
      4880., 5900., 4896., 5920., 4912., 5940., 4928., 5960., 4944., 5980.,
      4960., 6000., 4976., 6020., 4992., 6040., 5008., 6060., 5024., 6080.,
      5040., 6100., 5056., 6120., 5072., 6140., 5088., 6160., 5104., 6180.,
      5120., 6200., 5136., 6220., 5152., 6240., 5168., 6260., 5184., 6280.,
      5200., 6300., 5216., 6320., 5552., 6740., 5568., 6760., 5584., 6780.,
      5600., 6800., 5616., 6820., 5632., 6840., 5648., 6860., 5664., 6880.,
      5680., 6900., 5696., 6920., 5712., 6940., 5728., 6960., 5744., 6980.,
      5760., 7000., 5776., 7020., 5792., 7040., 5808., 7060., 5824., 7080.,
      5840., 7100., 5856., 7120., 5872., 7140., 5888., 7160., 5904., 7180.,
      5920., 7200., 5936., 7220., 5952., 7240., 5968., 7260., 5984., 7280.,
      6320., 7700., 6336., 7720., 6352., 7740., 6368., 7760., 6384., 7780.,
      6400., 7800., 6416., 7820., 6432., 7840., 6448., 7860., 6464., 7880.,
      6480., 7900., 6496., 7920., 6512., 7940., 6528., 7960., 6544., 7980.,
      6560., 8000., 6576., 8020., 6592., 8040., 6608., 8060., 6624., 8080.,
      6640., 8100., 6656., 8120., 6672., 8140., 6688., 8160., 6704., 8180.,
      6720., 8200., 6736., 8220., 6752., 8240., 7088., 8660., 7104., 8680.,
      7120., 8700., 7136., 8720., 7152., 8740., 7168., 8760., 7184., 8780.,
      7200., 8800., 7216., 8820., 7232., 8840., 7248., 8860., 7264., 8880.,
      7280., 8900., 7296., 8920., 7312., 8940., 7328., 8960., 7344., 8980.,
      7360., 9000., 7376., 9020., 7392., 9040., 7408., 9060., 7424., 9080.,
      7440., 9100., 7456., 9120., 7472., 9140., 7488., 9160., 7504., 9180.,
      7520., 9200.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      66786.,  68640.,  70494.,  72348.,  66972.,  68832.,  70692.,  72552.,
      67158.,  69024.,  70890.,  72756.,  67344.,  69216.,  71088.,  72960.,
      93813.,  96558.,  99303.,  102048., 94074.,  96828.,  99582.,  102336.,
      94335.,  97098.,  99861.,  102624., 94596.,  97368.,  100140., 102912.,
      94857.,  97638.,  100419., 103200., 95118.,  97908.,  100698., 103488.,
      95379.,  98178.,  100977., 103776., 95640.,  98448.,  101256., 104064.,
      95901.,  98718.,  101535., 104352., 96162.,  98988.,  101814., 104640.,
      96423.,  99258.,  102093., 104928., 96684.,  99528.,  102372., 105216.,
      96945.,  99798.,  102651., 105504., 97206.,  100068., 102930., 105792.,
      97467.,  100338., 103209., 106080., 97728.,  100608., 103488., 106368.,
      60018.,  61896.,  63774.,  65652.,  60180.,  62064.,  63948.,  65832.,
      60342.,  62232.,  64122.,  66012.,  60504.,  62400.,  64296.,  66192.,
      60666.,  62568.,  64470.,  66372.,  60828.,  62736.,  64644.,  66552.,
      60990.,  62904.,  64818.,  66732.,  61152.,  63072.,  64992.,  66912.,
      75714.,  77856.,  79998.,  82140.,  75900.,  78048.,  80196.,  82344.,
      76086.,  78240.,  80394.,  82548.,  76272.,  78432.,  80592.,  82752.,
      106341., 109518., 112695., 115872., 106602., 109788., 112974., 116160.,
      106863., 110058., 113253., 116448., 107124., 110328., 113532., 116736.,
      107385., 110598., 113811., 117024., 107646., 110868., 114090., 117312.,
      107907., 111138., 114369., 117600., 108168., 111408., 114648., 117888.,
      108429., 111678., 114927., 118176., 108690., 111948., 115206., 118464.,
      108951., 112218., 115485., 118752., 109212., 112488., 115764., 119040.,
      109473., 112758., 116043., 119328., 109734., 113028., 116322., 119616.,
      109995., 113298., 116601., 119904., 110256., 113568., 116880., 120192.,
      67794.,  69960.,  72126.,  74292.,  67956.,  70128.,  72300.,  74472.,
      68118.,  70296.,  72474.,  74652.,  68280.,  70464.,  72648.,  74832.,
      68442.,  70632.,  72822.,  75012.,  68604.,  70800.,  72996.,  75192.,
      68766.,  70968.,  73170.,  75372.,  68928.,  71136.,  73344.,  75552.,
      84968.,  87440.,  89912.,  92384.,  85168.,  87648.,  90128.,  92608.,
      85368.,  87856.,  90344.,  92832.,  85568.,  88064.,  90560.,  93056.,
      119252., 122912., 126572., 130232., 119528., 123200., 126872., 130544.,
      119804., 123488., 127172., 130856., 120080., 123776., 127472., 131168.,
      120356., 124064., 127772., 131480., 120632., 124352., 128072., 131792.,
      120908., 124640., 128372., 132104., 121184., 124928., 128672., 132416.,
      121460., 125216., 128972., 132728., 121736., 125504., 129272., 133040.,
      122012., 125792., 129572., 133352., 122288., 126080., 129872., 133664.,
      122564., 126368., 130172., 133976., 122840., 126656., 130472., 134288.,
      123116., 126944., 130772., 134600., 123392., 127232., 131072., 134912.,
      75752.,  78256.,  80760.,  83264.,  75920.,  78432.,  80944.,  83456.,
      76088.,  78608.,  81128.,  83648.,  76256.,  78784.,  81312.,  83840.,
      76424.,  78960.,  81496.,  84032.,  76592.,  79136.,  81680.,  84224.,
      76760.,  79312.,  81864.,  84416.,  76928.,  79488.,  82048.,  84608.,
      94568.,  97424.,  100280., 103136., 94768.,  97632.,  100496., 103360.,
      94968.,  97840.,  100712., 103584., 95168.,  98048.,  100928., 103808.,
      132500., 136736., 140972., 145208., 132776., 137024., 141272., 145520.,
      133052., 137312., 141572., 145832., 133328., 137600., 141872., 146144.,
      133604., 137888., 142172., 146456., 133880., 138176., 142472., 146768.,
      134156., 138464., 142772., 147080., 134432., 138752., 143072., 147392.,
      134708., 139040., 143372., 147704., 134984., 139328., 143672., 148016.,
      135260., 139616., 143972., 148328., 135536., 139904., 144272., 148640.,
      135812., 140192., 144572., 148952., 136088., 140480., 144872., 149264.,
      136364., 140768., 145172., 149576., 136640., 141056., 145472., 149888.,
      83816.,  86704.,  89592.,  92480.,  83984.,  86880.,  89776.,  92672.,
      84152.,  87056.,  89960.,  92864.,  84320.,  87232.,  90144.,  93056.,
      84488.,  87408.,  90328.,  93248.,  84656.,  87584.,  90512.,  93440.,
      84824.,  87760.,  90696.,  93632.,  84992.,  87936.,  90880.,  93824.,
      44538.,  46392.,  48246.,  50100.,  44652.,  46512.,  48372.,  50232.,
      44766.,  46632.,  48498.,  50364.,  44880.,  46752.,  48624.,  50496.,
      60873.,  63618.,  66363.,  69108.,  61026.,  63780.,  66534.,  69288.,
      61179.,  63942.,  66705.,  69468.,  61332.,  64104.,  66876.,  69648.,
      61485.,  64266.,  67047.,  69828.,  61638.,  64428.,  67218.,  70008.,
      61791.,  64590.,  67389.,  70188.,  61944.,  64752.,  67560.,  70368.,
      62097.,  64914.,  67731.,  70548.,  62250.,  65076.,  67902.,  70728.,
      62403.,  65238.,  68073.,  70908.,  62556.,  65400.,  68244.,  71088.,
      62709.,  65562.,  68415.,  71268.,  62862.,  65724.,  68586.,  71448.,
      63015.,  65886.,  68757.,  71628.,  63168.,  66048.,  68928.,  71808.,
      37482.,  39360.,  41238.,  43116.,  37572.,  39456.,  41340.,  43224.,
      37662.,  39552.,  41442.,  43332.,  37752.,  39648.,  41544.,  43440.,
      37842.,  39744.,  41646.,  43548.,  37932.,  39840.,  41748.,  43656.,
      38022.,  39936.,  41850.,  43764.,  38112.,  40032.,  41952.,  43872.,
      50010.,  52152.,  54294.,  56436.,  50124.,  52272.,  54420.,  56568.,
      50238.,  52392.,  54546.,  56700.,  50352.,  52512.,  54672.,  56832.,
      68217.,  71394.,  74571.,  77748.,  68370.,  71556.,  74742.,  77928.,
      68523.,  71718.,  74913.,  78108.,  68676.,  71880.,  75084.,  78288.,
      68829.,  72042.,  75255.,  78468.,  68982.,  72204.,  75426.,  78648.,
      69135.,  72366.,  75597.,  78828.,  69288.,  72528.,  75768.,  79008.,
      69441.,  72690.,  75939.,  79188.,  69594.,  72852.,  76110.,  79368.,
      69747.,  73014.,  76281.,  79548.,  69900.,  73176.,  76452.,  79728.,
      70053.,  73338.,  76623.,  79908.,  70206.,  73500.,  76794.,  80088.,
      70359.,  73662.,  76965.,  80268.,  70512.,  73824.,  77136.,  80448.,
      41802.,  43968.,  46134.,  48300.,  41892.,  44064.,  46236.,  48408.,
      41982.,  44160.,  46338.,  48516.,  42072.,  44256.,  46440.,  48624.,
      42162.,  44352.,  46542.,  48732.,  42252.,  44448.,  46644.,  48840.,
      42342.,  44544.,  46746.,  48948.,  42432.,  44640.,  46848.,  49056.,
      55482.,  57912.,  60342.,  62772.,  55596.,  58032.,  60468.,  62904.,
      55710.,  58152.,  60594.,  63036.,  55824.,  58272.,  60720.,  63168.,
      75561.,  79170.,  82779.,  86388.,  75714.,  79332.,  82950.,  86568.,
      75867.,  79494.,  83121.,  86748.,  76020.,  79656.,  83292.,  86928.,
      76173.,  79818.,  83463.,  87108.,  76326.,  79980.,  83634.,  87288.,
      76479.,  80142.,  83805.,  87468.,  76632.,  80304.,  83976.,  87648.,
      76785.,  80466.,  84147.,  87828.,  76938.,  80628.,  84318.,  88008.,
      77091.,  80790.,  84489.,  88188.,  77244.,  80952.,  84660.,  88368.,
      77397.,  81114.,  84831.,  88548.,  77550.,  81276.,  85002.,  88728.,
      77703.,  81438.,  85173.,  88908.,  77856.,  81600.,  85344.,  89088.,
      46122.,  48576.,  51030.,  53484.,  46212.,  48672.,  51132.,  53592.,
      46302.,  48768.,  51234.,  53700.,  46392.,  48864.,  51336.,  53808.,
      46482.,  48960.,  51438.,  53916.,  46572.,  49056.,  51540.,  54024.,
      46662.,  49152.,  51642.,  54132.,  46752.,  49248.,  51744.,  54240.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4540.,  4960.,  5380.,  5800.,  4568.,  4992.,  5416.,  5840.,  4596.,
      5024.,  5452.,  5880.,  4624.,  5056.,  5488.,  5920.,  4652.,  5088.,
      5524.,  5960.,  4680.,  5120.,  5560.,  6000.,  4708.,  5152.,  5596.,
      6040.,  4736.,  5184.,  5632.,  6080.,  4764.,  5216.,  5668.,  6120.,
      4792.,  5248.,  5704.,  6160.,  4820.,  5280.,  5740.,  6200.,  4848.,
      5312.,  5776.,  6240.,  4876.,  5344.,  5812.,  6280.,  4904.,  5376.,
      5848.,  6320.,  4932.,  5408.,  5884.,  6360.,  4960.,  5440.,  5920.,
      6400.,  4988.,  5472.,  5956.,  6440.,  5016.,  5504.,  5992.,  6480.,
      5044.,  5536.,  6028.,  6520.,  5072.,  5568.,  6064.,  6560.,  5100.,
      5600.,  6100.,  6600.,  5128.,  5632.,  6136.,  6640.,  5156.,  5664.,
      6172.,  6680.,  5184.,  5696.,  6208.,  6720.,  5212.,  5728.,  6244.,
      6760.,  5240.,  5760.,  6280.,  6800.,  5268.,  5792.,  6316.,  6840.,
      5296.,  5824.,  6352.,  6880.,  5884.,  6496.,  7108.,  7720.,  5912.,
      6528.,  7144.,  7760.,  5940.,  6560.,  7180.,  7800.,  5968.,  6592.,
      7216.,  7840.,  5996.,  6624.,  7252.,  7880.,  6024.,  6656.,  7288.,
      7920.,  6052.,  6688.,  7324.,  7960.,  6080.,  6720.,  7360.,  8000.,
      6108.,  6752.,  7396.,  8040.,  6136.,  6784.,  7432.,  8080.,  6164.,
      6816.,  7468.,  8120.,  6192.,  6848.,  7504.,  8160.,  6220.,  6880.,
      7540.,  8200.,  6248.,  6912.,  7576.,  8240.,  6276.,  6944.,  7612.,
      8280.,  6304.,  6976.,  7648.,  8320.,  6332.,  7008.,  7684.,  8360.,
      6360.,  7040.,  7720.,  8400.,  6388.,  7072.,  7756.,  8440.,  6416.,
      7104.,  7792.,  8480.,  6444.,  7136.,  7828.,  8520.,  6472.,  7168.,
      7864.,  8560.,  6500.,  7200.,  7900.,  8600.,  6528.,  7232.,  7936.,
      8640.,  6556.,  7264.,  7972.,  8680.,  6584.,  7296.,  8008.,  8720.,
      6612.,  7328.,  8044.,  8760.,  6640.,  7360.,  8080.,  8800.,  7228.,
      8032.,  8836.,  9640.,  7256.,  8064.,  8872.,  9680.,  7284.,  8096.,
      8908.,  9720.,  7312.,  8128.,  8944.,  9760.,  7340.,  8160.,  8980.,
      9800.,  7368.,  8192.,  9016.,  9840.,  7396.,  8224.,  9052.,  9880.,
      7424.,  8256.,  9088.,  9920.,  7452.,  8288.,  9124.,  9960.,  7480.,
      8320.,  9160.,  10000., 7508.,  8352.,  9196.,  10040., 7536.,  8384.,
      9232.,  10080., 7564.,  8416.,  9268.,  10120., 7592.,  8448.,  9304.,
      10160., 7620.,  8480.,  9340.,  10200., 7648.,  8512.,  9376.,  10240.,
      7676.,  8544.,  9412.,  10280., 7704.,  8576.,  9448.,  10320., 7732.,
      8608.,  9484.,  10360., 7760.,  8640.,  9520.,  10400., 7788.,  8672.,
      9556.,  10440., 7816.,  8704.,  9592.,  10480., 7844.,  8736.,  9628.,
      10520., 7872.,  8768.,  9664.,  10560., 7900.,  8800.,  9700.,  10600.,
      7928.,  8832.,  9736.,  10640., 7956.,  8864.,  9772.,  10680., 7984.,
      8896.,  9808.,  10720., 8572.,  9568.,  10564., 11560., 8600.,  9600.,
      10600., 11600., 8628.,  9632.,  10636., 11640., 8656.,  9664.,  10672.,
      11680., 8684.,  9696.,  10708., 11720., 8712.,  9728.,  10744., 11760.,
      8740.,  9760.,  10780., 11800., 8768.,  9792.,  10816., 11840., 8796.,
      9824.,  10852., 11880., 8824.,  9856.,  10888., 11920., 8852.,  9888.,
      10924., 11960., 8880.,  9920.,  10960., 12000., 8908.,  9952.,  10996.,
      12040., 8936.,  9984.,  11032., 12080., 8964.,  10016., 11068., 12120.,
      8992.,  10048., 11104., 12160., 9020.,  10080., 11140., 12200., 9048.,
      10112., 11176., 12240., 9076.,  10144., 11212., 12280., 9104.,  10176.,
      11248., 12320., 9132.,  10208., 11284., 12360., 9160.,  10240., 11320.,
      12400., 9188.,  10272., 11356., 12440., 9216.,  10304., 11392., 12480.,
      9244.,  10336., 11428., 12520., 9272.,  10368., 11464., 12560., 9300.,
      10400., 11500., 12600., 9328.,  10432., 11536., 12640., 9916.,  11104.,
      12292., 13480., 9944.,  11136., 12328., 13520., 9972.,  11168., 12364.,
      13560., 10000., 11200., 12400., 13600., 10028., 11232., 12436., 13640.,
      10056., 11264., 12472., 13680., 10084., 11296., 12508., 13720., 10112.,
      11328., 12544., 13760., 10140., 11360., 12580., 13800., 10168., 11392.,
      12616., 13840., 10196., 11424., 12652., 13880., 10224., 11456., 12688.,
      13920., 10252., 11488., 12724., 13960., 10280., 11520., 12760., 14000.,
      10308., 11552., 12796., 14040., 10336., 11584., 12832., 14080., 10364.,
      11616., 12868., 14120., 10392., 11648., 12904., 14160., 10420., 11680.,
      12940., 14200., 10448., 11712., 12976., 14240., 10476., 11744., 13012.,
      14280., 10504., 11776., 13048., 14320., 10532., 11808., 13084., 14360.,
      10560., 11840., 13120., 14400., 10588., 11872., 13156., 14440., 10616.,
      11904., 13192., 14480., 10644., 11936., 13228., 14520., 10672., 11968.,
      13264., 14560., 11260., 12640., 14020., 15400., 11288., 12672., 14056.,
      15440., 11316., 12704., 14092., 15480., 11344., 12736., 14128., 15520.,
      11372., 12768., 14164., 15560., 11400., 12800., 14200., 15600., 11428.,
      12832., 14236., 15640., 11456., 12864., 14272., 15680., 11484., 12896.,
      14308., 15720., 11512., 12928., 14344., 15760., 11540., 12960., 14380.,
      15800., 11568., 12992., 14416., 15840., 11596., 13024., 14452., 15880.,
      11624., 13056., 14488., 15920., 11652., 13088., 14524., 15960., 11680.,
      13120., 14560., 16000., 11708., 13152., 14596., 16040., 11736., 13184.,
      14632., 16080., 11764., 13216., 14668., 16120., 11792., 13248., 14704.,
      16160., 11820., 13280., 14740., 16200., 11848., 13312., 14776., 16240.,
      11876., 13344., 14812., 16280., 11904., 13376., 14848., 16320., 11932.,
      13408., 14884., 16360., 11960., 13440., 14920., 16400., 11988., 13472.,
      14956., 16440., 12016., 13504., 14992., 16480., 12604., 14176., 15748.,
      17320., 12632., 14208., 15784., 17360., 12660., 14240., 15820., 17400.,
      12688., 14272., 15856., 17440., 12716., 14304., 15892., 17480., 12744.,
      14336., 15928., 17520., 12772., 14368., 15964., 17560., 12800., 14400.,
      16000., 17600., 12828., 14432., 16036., 17640., 12856., 14464., 16072.,
      17680., 12884., 14496., 16108., 17720., 12912., 14528., 16144., 17760.,
      12940., 14560., 16180., 17800., 12968., 14592., 16216., 17840., 12996.,
      14624., 16252., 17880., 13024., 14656., 16288., 17920., 13052., 14688.,
      16324., 17960., 13080., 14720., 16360., 18000., 13108., 14752., 16396.,
      18040., 13136., 14784., 16432., 18080., 13164., 14816., 16468., 18120.,
      13192., 14848., 16504., 18160., 13220., 14880., 16540., 18200., 13248.,
      14912., 16576., 18240., 13276., 14944., 16612., 18280., 13304., 14976.,
      16648., 18320., 13332., 15008., 16684., 18360., 13360., 15040., 16720.,
      18400.};
  const std::array<int, 4> in_shape = {{1, 14, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      10377., 10476., 13318., 13444., 9558.,  9648.,  9738.,  11763., 11862.,
      15082., 15208., 10818., 10908., 10998., 13220., 13328., 16936., 17072.,
      12128., 12224., 12320., 14732., 14840., 18840., 18976., 13472., 13568.,
      13664., 7101.,  7164.,  8950.,  9028.,  6282.,  6336.,  6390.,  7983.,
      8046.,  10042., 10120., 7038.,  7092.,  7146.,  8865.,  8928.,  11134.,
      11212., 7794.,  7848.,  7902.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      426.,  436.,  446.,  456.,  466.,  476.,  486.,  566.,  576.,  586.,
      596.,  606.,  616.,  626.,  706.,  716.,  726.,  736.,  746.,  756.,
      766.,  846.,  856.,  866.,  876.,  886.,  896.,  906.,  986.,  996.,
      1006., 1016., 1026., 1036., 1046., 1126., 1136., 1146., 1156., 1166.,
      1176., 1186., 1266., 1276., 1286., 1296., 1306., 1316., 1326.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19935., 20754., 20124., 20952., 25544., 26636., 25784., 26888., 18297.,
      19116., 18468., 19296., 18639., 19476., 22581., 23526., 22770., 23724.,
      28904., 30164., 29144., 30416., 20691., 21636., 20862., 21816., 21033.,
      21996., 25348., 26440., 25552., 26656., 32416., 33872., 32672., 34144.,
      23164., 24256., 23344., 24448., 23524., 24640., 28204., 29464., 28408.,
      29680., 36000., 37680., 36256., 37952., 25684., 26944., 25864., 27136.,
      26044., 27328., 13383., 14202., 13500., 14328., 16808., 17900., 16952.,
      18056., 11745., 12564., 11844., 12672., 11943., 12780., 15021., 15966.,
      15138., 16092., 18824., 20084., 18968., 20240., 13131., 14076., 13230.,
      14184., 13329., 14292., 16659., 17730., 16776., 17856., 20840., 22268.,
      20984., 22424., 14517., 15588., 14616., 15696., 14715., 15804.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      728.,  852.,  744.,  872.,  760.,  892.,  776.,  912.,  792.,  932.,
      808.,  952.,  824.,  972.,  952.,  1132., 968.,  1152., 984.,  1172.,
      1000., 1192., 1016., 1212., 1032., 1232., 1048., 1252., 1176., 1412.,
      1192., 1432., 1208., 1452., 1224., 1472., 1240., 1492., 1256., 1512.,
      1272., 1532., 1400., 1692., 1416., 1712., 1432., 1732., 1448., 1752.,
      1464., 1772., 1480., 1792., 1496., 1812., 1624., 1972., 1640., 1992.,
      1656., 2012., 1672., 2032., 1688., 2052., 1704., 2072., 1720., 2092.,
      1848., 2252., 1864., 2272., 1880., 2292., 1896., 2312., 1912., 2332.,
      1928., 2352., 1944., 2372., 2072., 2532., 2088., 2552., 2104., 2572.,
      2120., 2592., 2136., 2612., 2152., 2632., 2168., 2652.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      39051., 39870., 40689., 41508., 39420., 40248., 41076., 41904., 49996.,
      51088., 52180., 53272., 50464., 51568., 52672., 53776., 35775., 36594.,
      37413., 38232., 36108., 36936., 37764., 38592., 36441., 37278., 38115.,
      38952., 44217., 45162., 46107., 47052., 44586., 45540., 46494., 47448.,
      56548., 57808., 59068., 60328., 57016., 58288., 59560., 60832., 40437.,
      41382., 42327., 43272., 40770., 41724., 42678., 43632., 41103., 42066.,
      43029., 43992., 49604., 50696., 51788., 52880., 50000., 51104., 52208.,
      53312., 63376., 64832., 66288., 67744., 63872., 65344., 66816., 68288.,
      45236., 46328., 47420., 48512., 45584., 46688., 47792., 48896., 45932.,
      47048., 48164., 49280., 55148., 56408., 57668., 58928., 55544., 56816.,
      58088., 59360., 70320., 72000., 73680., 75360., 70816., 72512., 74208.,
      75904., 50108., 51368., 52628., 53888., 50456., 51728., 53000., 54272.,
      50804., 52088., 53372., 54656., 25947., 26766., 27585., 28404., 26172.,
      27000., 27828., 28656., 32524., 33616., 34708., 35800., 32800., 33904.,
      35008., 36112., 22671., 23490., 24309., 25128., 22860., 23688., 24516.,
      25344., 23049., 23886., 24723., 25560., 29097., 30042., 30987., 31932.,
      29322., 30276., 31230., 32184., 36388., 37648., 38908., 40168., 36664.,
      37936., 39208., 40480., 25317., 26262., 27207., 28152., 25506., 26460.,
      27414., 28368., 25695., 26658., 27621., 28584., 32247., 33318., 34389.,
      35460., 32472., 33552., 34632., 35712., 40252., 41680., 43108., 44536.,
      40528., 41968., 43408., 44848., 27963., 29034., 30105., 31176., 28152.,
      29232., 30312., 31392., 28341., 29430., 30519., 31608.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1332., 1456., 1580., 1704., 1360., 1488., 1616., 1744., 1388., 1520.,
      1652., 1784., 1416., 1552., 1688., 1824., 1444., 1584., 1724., 1864.,
      1472., 1616., 1760., 1904., 1500., 1648., 1796., 1944., 1724., 1904.,
      2084., 2264., 1752., 1936., 2120., 2304., 1780., 1968., 2156., 2344.,
      1808., 2000., 2192., 2384., 1836., 2032., 2228., 2424., 1864., 2064.,
      2264., 2464., 1892., 2096., 2300., 2504., 2116., 2352., 2588., 2824.,
      2144., 2384., 2624., 2864., 2172., 2416., 2660., 2904., 2200., 2448.,
      2696., 2944., 2228., 2480., 2732., 2984., 2256., 2512., 2768., 3024.,
      2284., 2544., 2804., 3064., 2508., 2800., 3092., 3384., 2536., 2832.,
      3128., 3424., 2564., 2864., 3164., 3464., 2592., 2896., 3200., 3504.,
      2620., 2928., 3236., 3544., 2648., 2960., 3272., 3584., 2676., 2992.,
      3308., 3624., 2900., 3248., 3596., 3944., 2928., 3280., 3632., 3984.,
      2956., 3312., 3668., 4024., 2984., 3344., 3704., 4064., 3012., 3376.,
      3740., 4104., 3040., 3408., 3776., 4144., 3068., 3440., 3812., 4184.,
      3292., 3696., 4100., 4504., 3320., 3728., 4136., 4544., 3348., 3760.,
      4172., 4584., 3376., 3792., 4208., 4624., 3404., 3824., 4244., 4664.,
      3432., 3856., 4280., 4704., 3460., 3888., 4316., 4744., 3684., 4144.,
      4604., 5064., 3712., 4176., 4640., 5104., 3740., 4208., 4676., 5144.,
      3768., 4240., 4712., 5184., 3796., 4272., 4748., 5224., 3824., 4304.,
      4784., 5264., 3852., 4336., 4820., 5304.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20655., 20754., 20853., 20952., 26510., 26636., 26762., 26888., 19026.,
      19116., 19206., 19296., 19386., 19476., 23427., 23526., 23625., 23724.,
      30038., 30164., 30290., 30416., 21546., 21636., 21726., 21816., 21906.,
      21996., 26332., 26440., 26548., 26656., 33736., 33872., 34008., 34144.,
      24160., 24256., 24352., 24448., 24544., 24640., 29356., 29464., 29572.,
      29680., 37544., 37680., 37816., 37952., 26848., 26944., 27040., 27136.,
      27232., 27328., 14139., 14202., 14265., 14328., 17822., 17900., 17978.,
      18056., 12510., 12564., 12618., 12672., 12726., 12780., 15903., 15966.,
      16029., 16092., 20006., 20084., 20162., 20240., 14022., 14076., 14130.,
      14184., 14238., 14292., 17667., 17730., 17793., 17856., 22190., 22268.,
      22346., 22424., 15534., 15588., 15642., 15696., 15750., 15804.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      842.,  852.,  862.,  872.,  882.,  892.,  902.,  912.,  922.,  932.,
      942.,  952.,  962.,  972.,  1122., 1132., 1142., 1152., 1162., 1172.,
      1182., 1192., 1202., 1212., 1222., 1232., 1242., 1252., 1402., 1412.,
      1422., 1432., 1442., 1452., 1462., 1472., 1482., 1492., 1502., 1512.,
      1522., 1532., 1682., 1692., 1702., 1712., 1722., 1732., 1742., 1752.,
      1762., 1772., 1782., 1792., 1802., 1812., 1962., 1972., 1982., 1992.,
      2002., 2012., 2022., 2032., 2042., 2052., 2062., 2072., 2082., 2092.,
      2242., 2252., 2262., 2272., 2282., 2292., 2302., 2312., 2322., 2332.,
      2342., 2352., 2362., 2372., 2522., 2532., 2542., 2552., 2562., 2572.,
      2582., 2592., 2602., 2612., 2622., 2632., 2642., 2652.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      39681., 41310., 39870., 41508., 40059., 41706., 40248., 41904., 50848.,
      53020., 51088., 53272., 51328., 53524., 51568., 53776., 36423., 38052.,
      36594., 38232., 36765., 38412., 36936., 38592., 37107., 38772., 37278.,
      38952., 44973., 46854., 45162., 47052., 45351., 47250., 45540., 47448.,
      57568., 60076., 57808., 60328., 58048., 60580., 58288., 60832., 41211.,
      43092., 41382., 43272., 41553., 43452., 41724., 43632., 41895., 43812.,
      42066., 43992., 50492., 52664., 50696., 52880., 50900., 53096., 51104.,
      53312., 64576., 67472., 64832., 67744., 65088., 68016., 65344., 68288.,
      46148., 48320., 46328., 48512., 46508., 48704., 46688., 48896., 46868.,
      49088., 47048., 49280., 56204., 58712., 56408., 58928., 56612., 59144.,
      56816., 59360., 71744., 75088., 72000., 75360., 72256., 75632., 72512.,
      75904., 51188., 53696., 51368., 53888., 51548., 54080., 51728., 54272.,
      51908., 54464., 52088., 54656., 26649., 28278., 26766., 28404., 26883.,
      28530., 27000., 28656., 33472., 35644., 33616., 35800., 33760., 35956.,
      33904., 36112., 23391., 25020., 23490., 25128., 23589., 25236., 23688.,
      25344., 23787., 25452., 23886., 25560., 29925., 31806., 30042., 31932.,
      30159., 32058., 30276., 32184., 37504., 40012., 37648., 40168., 37792.,
      40324., 37936., 40480., 26163., 28044., 26262., 28152., 26361., 28260.,
      26460., 28368., 26559., 28476., 26658., 28584., 33201., 35334., 33318.,
      35460., 33435., 35586., 33552., 35712., 41536., 44380., 41680., 44536.,
      41824., 44692., 41968., 44848., 28935., 31068., 29034., 31176., 29133.,
      31284., 29232., 31392., 29331., 31500., 29430., 31608.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1440., 1684., 1456., 1704., 1472., 1724., 1488., 1744., 1504., 1764.,
      1520., 1784., 1536., 1804., 1552., 1824., 1568., 1844., 1584., 1864.,
      1600., 1884., 1616., 1904., 1632., 1924., 1648., 1944., 1888., 2244.,
      1904., 2264., 1920., 2284., 1936., 2304., 1952., 2324., 1968., 2344.,
      1984., 2364., 2000., 2384., 2016., 2404., 2032., 2424., 2048., 2444.,
      2064., 2464., 2080., 2484., 2096., 2504., 2336., 2804., 2352., 2824.,
      2368., 2844., 2384., 2864., 2400., 2884., 2416., 2904., 2432., 2924.,
      2448., 2944., 2464., 2964., 2480., 2984., 2496., 3004., 2512., 3024.,
      2528., 3044., 2544., 3064., 2784., 3364., 2800., 3384., 2816., 3404.,
      2832., 3424., 2848., 3444., 2864., 3464., 2880., 3484., 2896., 3504.,
      2912., 3524., 2928., 3544., 2944., 3564., 2960., 3584., 2976., 3604.,
      2992., 3624., 3232., 3924., 3248., 3944., 3264., 3964., 3280., 3984.,
      3296., 4004., 3312., 4024., 3328., 4044., 3344., 4064., 3360., 4084.,
      3376., 4104., 3392., 4124., 3408., 4144., 3424., 4164., 3440., 4184.,
      3680., 4484., 3696., 4504., 3712., 4524., 3728., 4544., 3744., 4564.,
      3760., 4584., 3776., 4604., 3792., 4624., 3808., 4644., 3824., 4664.,
      3840., 4684., 3856., 4704., 3872., 4724., 3888., 4744., 4128., 5044.,
      4144., 5064., 4160., 5084., 4176., 5104., 4192., 5124., 4208., 5144.,
      4224., 5164., 4240., 5184., 4256., 5204., 4272., 5224., 4288., 5244.,
      4304., 5264., 4320., 5284., 4336., 5304.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77733.,  79362.,  80991.,  82620.,  78102.,  79740.,  81378.,  83016.,
      78471.,  80118.,  81765.,  83412.,  78840.,  80496.,  82152.,  83808.,
      99524.,  101696., 103868., 106040., 99992.,  102176., 104360., 106544.,
      100460., 102656., 104852., 107048., 100928., 103136., 105344., 107552.,
      71217.,  72846.,  74475.,  76104.,  71550.,  73188.,  74826.,  76464.,
      71883.,  73530.,  75177.,  76824.,  72216.,  73872.,  75528.,  77184.,
      72549.,  74214.,  75879.,  77544.,  72882.,  74556.,  76230.,  77904.,
      88065.,  89946.,  91827.,  93708.,  88434.,  90324.,  92214.,  94104.,
      88803.,  90702.,  92601.,  94500.,  89172.,  91080.,  92988.,  94896.,
      112628., 115136., 117644., 120152., 113096., 115616., 118136., 120656.,
      113564., 116096., 118628., 121160., 114032., 116576., 119120., 121664.,
      80541.,  82422.,  84303.,  86184.,  80874.,  82764.,  84654.,  86544.,
      81207.,  83106.,  85005.,  86904.,  81540.,  83448.,  85356.,  87264.,
      81873.,  83790.,  85707.,  87624.,  82206.,  84132.,  86058.,  87984.,
      98812.,  100984., 103156., 105328., 99208.,  101392., 103576., 105760.,
      99604.,  101800., 103996., 106192., 100000., 102208., 104416., 106624.,
      126256., 129152., 132048., 134944., 126752., 129664., 132576., 135488.,
      127248., 130176., 133104., 136032., 127744., 130688., 133632., 136576.,
      90124.,  92296.,  94468.,  96640.,  90472.,  92656.,  94840.,  97024.,
      90820.,  93016.,  95212.,  97408.,  91168.,  93376.,  95584.,  97792.,
      91516.,  93736.,  95956.,  98176.,  91864.,  94096.,  96328.,  98560.,
      109900., 112408., 114916., 117424., 110296., 112816., 115336., 117856.,
      110692., 113224., 115756., 118288., 111088., 113632., 116176., 118720.,
      140144., 143488., 146832., 150176., 140640., 144000., 147360., 150720.,
      141136., 144512., 147888., 151264., 141632., 145024., 148416., 151808.,
      99868.,  102376., 104884., 107392., 100216., 102736., 105256., 107776.,
      100564., 103096., 105628., 108160., 100912., 103456., 106000., 108544.,
      101260., 103816., 106372., 108928., 101608., 104176., 106744., 109312.,
      51669.,  53298.,  54927.,  56556.,  51894.,  53532.,  55170.,  56808.,
      52119.,  53766.,  55413.,  57060.,  52344.,  54000.,  55656.,  57312.,
      64772.,  66944.,  69116.,  71288.,  65048.,  67232.,  69416.,  71600.,
      65324.,  67520.,  69716.,  71912.,  65600.,  67808.,  70016.,  72224.,
      45153.,  46782.,  48411.,  50040.,  45342.,  46980.,  48618.,  50256.,
      45531.,  47178.,  48825.,  50472.,  45720.,  47376.,  49032.,  50688.,
      45909.,  47574.,  49239.,  50904.,  46098.,  47772.,  49446.,  51120.,
      57969.,  59850.,  61731.,  63612.,  58194.,  60084.,  61974.,  63864.,
      58419.,  60318.,  62217.,  64116.,  58644.,  60552.,  62460.,  64368.,
      72500.,  75008.,  77516.,  80024.,  72776.,  75296.,  77816.,  80336.,
      73052.,  75584.,  78116.,  80648.,  73328.,  75872.,  78416.,  80960.,
      50445.,  52326.,  54207.,  56088.,  50634.,  52524.,  54414.,  56304.,
      50823.,  52722.,  54621.,  56520.,  51012.,  52920.,  54828.,  56736.,
      51201.,  53118.,  55035.,  56952.,  51390.,  53316.,  55242.,  57168.,
      64269.,  66402.,  68535.,  70668.,  64494.,  66636.,  68778.,  70920.,
      64719.,  66870.,  69021.,  71172.,  64944.,  67104.,  69264.,  71424.,
      80228.,  83072.,  85916.,  88760.,  80504.,  83360.,  86216.,  89072.,
      80780.,  83648.,  86516.,  89384.,  81056.,  83936.,  86816.,  89696.,
      55737.,  57870.,  60003.,  62136.,  55926.,  58068.,  60210.,  62352.,
      56115.,  58266.,  60417.,  62568.,  56304.,  58464.,  60624.,  62784.,
      56493.,  58662.,  60831.,  63000.,  56682.,  58860.,  61038.,  63216.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2636., 2880.,  3124., 3368.,  2664., 2912.,  3160., 3408.,  2692., 2944.,
      3196., 3448.,  2720., 2976.,  3232., 3488.,  2748., 3008.,  3268., 3528.,
      2776., 3040.,  3304., 3568.,  2804., 3072.,  3340., 3608.,  2832., 3104.,
      3376., 3648.,  2860., 3136.,  3412., 3688.,  2888., 3168.,  3448., 3728.,
      2916., 3200.,  3484., 3768.,  2944., 3232.,  3520., 3808.,  2972., 3264.,
      3556., 3848.,  3000., 3296.,  3592., 3888.,  3420., 3776.,  4132., 4488.,
      3448., 3808.,  4168., 4528.,  3476., 3840.,  4204., 4568.,  3504., 3872.,
      4240., 4608.,  3532., 3904.,  4276., 4648.,  3560., 3936.,  4312., 4688.,
      3588., 3968.,  4348., 4728.,  3616., 4000.,  4384., 4768.,  3644., 4032.,
      4420., 4808.,  3672., 4064.,  4456., 4848.,  3700., 4096.,  4492., 4888.,
      3728., 4128.,  4528., 4928.,  3756., 4160.,  4564., 4968.,  3784., 4192.,
      4600., 5008.,  4204., 4672.,  5140., 5608.,  4232., 4704.,  5176., 5648.,
      4260., 4736.,  5212., 5688.,  4288., 4768.,  5248., 5728.,  4316., 4800.,
      5284., 5768.,  4344., 4832.,  5320., 5808.,  4372., 4864.,  5356., 5848.,
      4400., 4896.,  5392., 5888.,  4428., 4928.,  5428., 5928.,  4456., 4960.,
      5464., 5968.,  4484., 4992.,  5500., 6008.,  4512., 5024.,  5536., 6048.,
      4540., 5056.,  5572., 6088.,  4568., 5088.,  5608., 6128.,  4988., 5568.,
      6148., 6728.,  5016., 5600.,  6184., 6768.,  5044., 5632.,  6220., 6808.,
      5072., 5664.,  6256., 6848.,  5100., 5696.,  6292., 6888.,  5128., 5728.,
      6328., 6928.,  5156., 5760.,  6364., 6968.,  5184., 5792.,  6400., 7008.,
      5212., 5824.,  6436., 7048.,  5240., 5856.,  6472., 7088.,  5268., 5888.,
      6508., 7128.,  5296., 5920.,  6544., 7168.,  5324., 5952.,  6580., 7208.,
      5352., 5984.,  6616., 7248.,  5772., 6464.,  7156., 7848.,  5800., 6496.,
      7192., 7888.,  5828., 6528.,  7228., 7928.,  5856., 6560.,  7264., 7968.,
      5884., 6592.,  7300., 8008.,  5912., 6624.,  7336., 8048.,  5940., 6656.,
      7372., 8088.,  5968., 6688.,  7408., 8128.,  5996., 6720.,  7444., 8168.,
      6024., 6752.,  7480., 8208.,  6052., 6784.,  7516., 8248.,  6080., 6816.,
      7552., 8288.,  6108., 6848.,  7588., 8328.,  6136., 6880.,  7624., 8368.,
      6556., 7360.,  8164., 8968.,  6584., 7392.,  8200., 9008.,  6612., 7424.,
      8236., 9048.,  6640., 7456.,  8272., 9088.,  6668., 7488.,  8308., 9128.,
      6696., 7520.,  8344., 9168.,  6724., 7552.,  8380., 9208.,  6752., 7584.,
      8416., 9248.,  6780., 7616.,  8452., 9288.,  6808., 7648.,  8488., 9328.,
      6836., 7680.,  8524., 9368.,  6864., 7712.,  8560., 9408.,  6892., 7744.,
      8596., 9448.,  6920., 7776.,  8632., 9488.,  7340., 8256.,  9172., 10088.,
      7368., 8288.,  9208., 10128., 7396., 8320.,  9244., 10168., 7424., 8352.,
      9280., 10208., 7452., 8384.,  9316., 10248., 7480., 8416.,  9352., 10288.,
      7508., 8448.,  9388., 10328., 7536., 8480.,  9424., 10368., 7564., 8512.,
      9460., 10408., 7592., 8544.,  9496., 10448., 7620., 8576.,  9532., 10488.,
      7648., 8608.,  9568., 10528., 7676., 8640.,  9604., 10568., 7704., 8672.,
      9640., 10608.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41211., 41310., 41409., 41508., 41607., 41706., 41805., 41904., 52894.,
      53020., 53146., 53272., 53398., 53524., 53650., 53776., 37962., 38052.,
      38142., 38232., 38322., 38412., 38502., 38592., 38682., 38772., 38862.,
      38952., 46755., 46854., 46953., 47052., 47151., 47250., 47349., 47448.,
      59950., 60076., 60202., 60328., 60454., 60580., 60706., 60832., 43002.,
      43092., 43182., 43272., 43362., 43452., 43542., 43632., 43722., 43812.,
      43902., 43992., 52556., 52664., 52772., 52880., 52988., 53096., 53204.,
      53312., 67336., 67472., 67608., 67744., 67880., 68016., 68152., 68288.,
      48224., 48320., 48416., 48512., 48608., 48704., 48800., 48896., 48992.,
      49088., 49184., 49280., 58604., 58712., 58820., 58928., 59036., 59144.,
      59252., 59360., 74952., 75088., 75224., 75360., 75496., 75632., 75768.,
      75904., 53600., 53696., 53792., 53888., 53984., 54080., 54176., 54272.,
      54368., 54464., 54560., 54656., 28215., 28278., 28341., 28404., 28467.,
      28530., 28593., 28656., 35566., 35644., 35722., 35800., 35878., 35956.,
      36034., 36112., 24966., 25020., 25074., 25128., 25182., 25236., 25290.,
      25344., 25398., 25452., 25506., 25560., 31743., 31806., 31869., 31932.,
      31995., 32058., 32121., 32184., 39934., 40012., 40090., 40168., 40246.,
      40324., 40402., 40480., 27990., 28044., 28098., 28152., 28206., 28260.,
      28314., 28368., 28422., 28476., 28530., 28584., 35271., 35334., 35397.,
      35460., 35523., 35586., 35649., 35712., 44302., 44380., 44458., 44536.,
      44614., 44692., 44770., 44848., 31014., 31068., 31122., 31176., 31230.,
      31284., 31338., 31392., 31446., 31500., 31554., 31608.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1674., 1684., 1694., 1704., 1714., 1724., 1734., 1744., 1754., 1764.,
      1774., 1784., 1794., 1804., 1814., 1824., 1834., 1844., 1854., 1864.,
      1874., 1884., 1894., 1904., 1914., 1924., 1934., 1944., 2234., 2244.,
      2254., 2264., 2274., 2284., 2294., 2304., 2314., 2324., 2334., 2344.,
      2354., 2364., 2374., 2384., 2394., 2404., 2414., 2424., 2434., 2444.,
      2454., 2464., 2474., 2484., 2494., 2504., 2794., 2804., 2814., 2824.,
      2834., 2844., 2854., 2864., 2874., 2884., 2894., 2904., 2914., 2924.,
      2934., 2944., 2954., 2964., 2974., 2984., 2994., 3004., 3014., 3024.,
      3034., 3044., 3054., 3064., 3354., 3364., 3374., 3384., 3394., 3404.,
      3414., 3424., 3434., 3444., 3454., 3464., 3474., 3484., 3494., 3504.,
      3514., 3524., 3534., 3544., 3554., 3564., 3574., 3584., 3594., 3604.,
      3614., 3624., 3914., 3924., 3934., 3944., 3954., 3964., 3974., 3984.,
      3994., 4004., 4014., 4024., 4034., 4044., 4054., 4064., 4074., 4084.,
      4094., 4104., 4114., 4124., 4134., 4144., 4154., 4164., 4174., 4184.,
      4474., 4484., 4494., 4504., 4514., 4524., 4534., 4544., 4554., 4564.,
      4574., 4584., 4594., 4604., 4614., 4624., 4634., 4644., 4654., 4664.,
      4674., 4684., 4694., 4704., 4714., 4724., 4734., 4744., 5034., 5044.,
      5054., 5064., 5074., 5084., 5094., 5104., 5114., 5124., 5134., 5144.,
      5154., 5164., 5174., 5184., 5194., 5204., 5214., 5224., 5234., 5244.,
      5254., 5264., 5274., 5284., 5294., 5304.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      79173.,  82422.,  79362.,  82620.,  79551.,  82818.,  79740.,  83016.,
      79929.,  83214.,  80118.,  83412.,  80307.,  83610.,  80496.,  83808.,
      101456., 105788., 101696., 106040., 101936., 106292., 102176., 106544.,
      102416., 106796., 102656., 107048., 102896., 107300., 103136., 107552.,
      72675.,  75924.,  72846.,  76104.,  73017.,  76284.,  73188.,  76464.,
      73359.,  76644.,  73530.,  76824.,  73701.,  77004.,  73872.,  77184.,
      74043.,  77364.,  74214.,  77544.,  74385.,  77724.,  74556.,  77904.,
      89757.,  93510.,  89946.,  93708.,  90135.,  93906.,  90324.,  94104.,
      90513.,  94302.,  90702.,  94500.,  90891.,  94698.,  91080.,  94896.,
      114896., 119900., 115136., 120152., 115376., 120404., 115616., 120656.,
      115856., 120908., 116096., 121160., 116336., 121412., 116576., 121664.,
      82251.,  86004.,  82422.,  86184.,  82593.,  86364.,  82764.,  86544.,
      82935.,  86724.,  83106.,  86904.,  83277.,  87084.,  83448.,  87264.,
      83619.,  87444.,  83790.,  87624.,  83961.,  87804.,  84132.,  87984.,
      100780., 105112., 100984., 105328., 101188., 105544., 101392., 105760.,
      101596., 105976., 101800., 106192., 102004., 106408., 102208., 106624.,
      128896., 134672., 129152., 134944., 129408., 135216., 129664., 135488.,
      129920., 135760., 130176., 136032., 130432., 136304., 130688., 136576.,
      92116.,  96448.,  92296.,  96640.,  92476.,  96832.,  92656.,  97024.,
      92836.,  97216.,  93016.,  97408.,  93196.,  97600.,  93376.,  97792.,
      93556.,  97984.,  93736.,  98176.,  93916.,  98368.,  94096.,  98560.,
      112204., 117208., 112408., 117424., 112612., 117640., 112816., 117856.,
      113020., 118072., 113224., 118288., 113428., 118504., 113632., 118720.,
      143232., 149904., 143488., 150176., 143744., 150448., 144000., 150720.,
      144256., 150992., 144512., 151264., 144768., 151536., 145024., 151808.,
      102196., 107200., 102376., 107392., 102556., 107584., 102736., 107776.,
      102916., 107968., 103096., 108160., 103276., 108352., 103456., 108544.,
      103636., 108736., 103816., 108928., 103996., 109120., 104176., 109312.,
      53181.,  56430.,  53298.,  56556.,  53415.,  56682.,  53532.,  56808.,
      53649.,  56934.,  53766.,  57060.,  53883.,  57186.,  54000.,  57312.,
      66800.,  71132.,  66944.,  71288.,  67088.,  71444.,  67232.,  71600.,
      67376.,  71756.,  67520.,  71912.,  67664.,  72068.,  67808.,  72224.,
      46683.,  49932.,  46782.,  50040.,  46881.,  50148.,  46980.,  50256.,
      47079.,  50364.,  47178.,  50472.,  47277.,  50580.,  47376.,  50688.,
      47475.,  50796.,  47574.,  50904.,  47673.,  51012.,  47772.,  51120.,
      59733.,  63486.,  59850.,  63612.,  59967.,  63738.,  60084.,  63864.,
      60201.,  63990.,  60318.,  64116.,  60435.,  64242.,  60552.,  64368.,
      74864.,  79868.,  75008.,  80024.,  75152.,  80180.,  75296.,  80336.,
      75440.,  80492.,  75584.,  80648.,  75728.,  80804.,  75872.,  80960.,
      52227.,  55980.,  52326.,  56088.,  52425.,  56196.,  52524.,  56304.,
      52623.,  56412.,  52722.,  56520.,  52821.,  56628.,  52920.,  56736.,
      53019.,  56844.,  53118.,  56952.,  53217.,  57060.,  53316.,  57168.,
      66285.,  70542.,  66402.,  70668.,  66519.,  70794.,  66636.,  70920.,
      66753.,  71046.,  66870.,  71172.,  66987.,  71298.,  67104.,  71424.,
      82928.,  88604.,  83072.,  88760.,  83216.,  88916.,  83360.,  89072.,
      83504.,  89228.,  83648.,  89384.,  83792.,  89540.,  83936.,  89696.,
      57771.,  62028.,  57870.,  62136.,  57969.,  62244.,  58068.,  62352.,
      58167.,  62460.,  58266.,  62568.,  58365.,  62676.,  58464.,  62784.,
      58563.,  62892.,  58662.,  63000.,  58761.,  63108.,  58860.,  63216.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2864., 3348.,  2880., 3368.,  2896., 3388.,  2912., 3408.,  2928., 3428.,
      2944., 3448.,  2960., 3468.,  2976., 3488.,  2992., 3508.,  3008., 3528.,
      3024., 3548.,  3040., 3568.,  3056., 3588.,  3072., 3608.,  3088., 3628.,
      3104., 3648.,  3120., 3668.,  3136., 3688.,  3152., 3708.,  3168., 3728.,
      3184., 3748.,  3200., 3768.,  3216., 3788.,  3232., 3808.,  3248., 3828.,
      3264., 3848.,  3280., 3868.,  3296., 3888.,  3760., 4468.,  3776., 4488.,
      3792., 4508.,  3808., 4528.,  3824., 4548.,  3840., 4568.,  3856., 4588.,
      3872., 4608.,  3888., 4628.,  3904., 4648.,  3920., 4668.,  3936., 4688.,
      3952., 4708.,  3968., 4728.,  3984., 4748.,  4000., 4768.,  4016., 4788.,
      4032., 4808.,  4048., 4828.,  4064., 4848.,  4080., 4868.,  4096., 4888.,
      4112., 4908.,  4128., 4928.,  4144., 4948.,  4160., 4968.,  4176., 4988.,
      4192., 5008.,  4656., 5588.,  4672., 5608.,  4688., 5628.,  4704., 5648.,
      4720., 5668.,  4736., 5688.,  4752., 5708.,  4768., 5728.,  4784., 5748.,
      4800., 5768.,  4816., 5788.,  4832., 5808.,  4848., 5828.,  4864., 5848.,
      4880., 5868.,  4896., 5888.,  4912., 5908.,  4928., 5928.,  4944., 5948.,
      4960., 5968.,  4976., 5988.,  4992., 6008.,  5008., 6028.,  5024., 6048.,
      5040., 6068.,  5056., 6088.,  5072., 6108.,  5088., 6128.,  5552., 6708.,
      5568., 6728.,  5584., 6748.,  5600., 6768.,  5616., 6788.,  5632., 6808.,
      5648., 6828.,  5664., 6848.,  5680., 6868.,  5696., 6888.,  5712., 6908.,
      5728., 6928.,  5744., 6948.,  5760., 6968.,  5776., 6988.,  5792., 7008.,
      5808., 7028.,  5824., 7048.,  5840., 7068.,  5856., 7088.,  5872., 7108.,
      5888., 7128.,  5904., 7148.,  5920., 7168.,  5936., 7188.,  5952., 7208.,
      5968., 7228.,  5984., 7248.,  6448., 7828.,  6464., 7848.,  6480., 7868.,
      6496., 7888.,  6512., 7908.,  6528., 7928.,  6544., 7948.,  6560., 7968.,
      6576., 7988.,  6592., 8008.,  6608., 8028.,  6624., 8048.,  6640., 8068.,
      6656., 8088.,  6672., 8108.,  6688., 8128.,  6704., 8148.,  6720., 8168.,
      6736., 8188.,  6752., 8208.,  6768., 8228.,  6784., 8248.,  6800., 8268.,
      6816., 8288.,  6832., 8308.,  6848., 8328.,  6864., 8348.,  6880., 8368.,
      7344., 8948.,  7360., 8968.,  7376., 8988.,  7392., 9008.,  7408., 9028.,
      7424., 9048.,  7440., 9068.,  7456., 9088.,  7472., 9108.,  7488., 9128.,
      7504., 9148.,  7520., 9168.,  7536., 9188.,  7552., 9208.,  7568., 9228.,
      7584., 9248.,  7600., 9268.,  7616., 9288.,  7632., 9308.,  7648., 9328.,
      7664., 9348.,  7680., 9368.,  7696., 9388.,  7712., 9408.,  7728., 9428.,
      7744., 9448.,  7760., 9468.,  7776., 9488.,  8240., 10068., 8256., 10088.,
      8272., 10108., 8288., 10128., 8304., 10148., 8320., 10168., 8336., 10188.,
      8352., 10208., 8368., 10228., 8384., 10248., 8400., 10268., 8416., 10288.,
      8432., 10308., 8448., 10328., 8464., 10348., 8480., 10368., 8496., 10388.,
      8512., 10408., 8528., 10428., 8544., 10448., 8560., 10468., 8576., 10488.,
      8592., 10508., 8608., 10528., 8624., 10548., 8640., 10568., 8656., 10588.,
      8672., 10608.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME1x14x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      155097., 158346., 161595., 164844., 155466., 158724., 161982., 165240.,
      155835., 159102., 162369., 165636., 156204., 159480., 162756., 166032.,
      156573., 159858., 163143., 166428., 156942., 160236., 163530., 166824.,
      157311., 160614., 163917., 167220., 157680., 160992., 164304., 167616.,
      198580., 202912., 207244., 211576., 199048., 203392., 207736., 212080.,
      199516., 203872., 208228., 212584., 199984., 204352., 208720., 213088.,
      200452., 204832., 209212., 213592., 200920., 205312., 209704., 214096.,
      201388., 205792., 210196., 214600., 201856., 206272., 210688., 215104.,
      142101., 145350., 148599., 151848., 142434., 145692., 148950., 152208.,
      142767., 146034., 149301., 152568., 143100., 146376., 149652., 152928.,
      143433., 146718., 150003., 153288., 143766., 147060., 150354., 153648.,
      144099., 147402., 150705., 154008., 144432., 147744., 151056., 154368.,
      144765., 148086., 151407., 154728., 145098., 148428., 151758., 155088.,
      145431., 148770., 152109., 155448., 145764., 149112., 152460., 155808.,
      175761., 179514., 183267., 187020., 176130., 179892., 183654., 187416.,
      176499., 180270., 184041., 187812., 176868., 180648., 184428., 188208.,
      177237., 181026., 184815., 188604., 177606., 181404., 185202., 189000.,
      177975., 181782., 185589., 189396., 178344., 182160., 185976., 189792.,
      224788., 229792., 234796., 239800., 225256., 230272., 235288., 240304.,
      225724., 230752., 235780., 240808., 226192., 231232., 236272., 241312.,
      226660., 231712., 236764., 241816., 227128., 232192., 237256., 242320.,
      227596., 232672., 237748., 242824., 228064., 233152., 238240., 243328.,
      160749., 164502., 168255., 172008., 161082., 164844., 168606., 172368.,
      161415., 165186., 168957., 172728., 161748., 165528., 169308., 173088.,
      162081., 165870., 169659., 173448., 162414., 166212., 170010., 173808.,
      162747., 166554., 170361., 174168., 163080., 166896., 170712., 174528.,
      163413., 167238., 171063., 174888., 163746., 167580., 171414., 175248.,
      164079., 167922., 171765., 175608., 164412., 168264., 172116., 175968.,
      197228., 201560., 205892., 210224., 197624., 201968., 206312., 210656.,
      198020., 202376., 206732., 211088., 198416., 202784., 207152., 211520.,
      198812., 203192., 207572., 211952., 199208., 203600., 207992., 212384.,
      199604., 204008., 208412., 212816., 200000., 204416., 208832., 213248.,
      252016., 257792., 263568., 269344., 252512., 258304., 264096., 269888.,
      253008., 258816., 264624., 270432., 253504., 259328., 265152., 270976.,
      254000., 259840., 265680., 271520., 254496., 260352., 266208., 272064.,
      254992., 260864., 266736., 272608., 255488., 261376., 267264., 273152.,
      179900., 184232., 188564., 192896., 180248., 184592., 188936., 193280.,
      180596., 184952., 189308., 193664., 180944., 185312., 189680., 194048.,
      181292., 185672., 190052., 194432., 181640., 186032., 190424., 194816.,
      181988., 186392., 190796., 195200., 182336., 186752., 191168., 195584.,
      182684., 187112., 191540., 195968., 183032., 187472., 191912., 196352.,
      183380., 187832., 192284., 196736., 183728., 188192., 192656., 197120.,
      219404., 224408., 229412., 234416., 219800., 224816., 229832., 234848.,
      220196., 225224., 230252., 235280., 220592., 225632., 230672., 235712.,
      220988., 226040., 231092., 236144., 221384., 226448., 231512., 236576.,
      221780., 226856., 231932., 237008., 222176., 227264., 232352., 237440.,
      279792., 286464., 293136., 299808., 280288., 286976., 293664., 300352.,
      280784., 287488., 294192., 300896., 281280., 288000., 294720., 301440.,
      281776., 288512., 295248., 301984., 282272., 289024., 295776., 302528.,
      282768., 289536., 296304., 303072., 283264., 290048., 296832., 303616.,
      199388., 204392., 209396., 214400., 199736., 204752., 209768., 214784.,
      200084., 205112., 210140., 215168., 200432., 205472., 210512., 215552.,
      200780., 205832., 210884., 215936., 201128., 206192., 211256., 216320.,
      201476., 206552., 211628., 216704., 201824., 206912., 212000., 217088.,
      202172., 207272., 212372., 217472., 202520., 207632., 212744., 217856.,
      202868., 207992., 213116., 218240., 203216., 208352., 213488., 218624.,
      103113., 106362., 109611., 112860., 103338., 106596., 109854., 113112.,
      103563., 106830., 110097., 113364., 103788., 107064., 110340., 113616.,
      104013., 107298., 110583., 113868., 104238., 107532., 110826., 114120.,
      104463., 107766., 111069., 114372., 104688., 108000., 111312., 114624.,
      129268., 133600., 137932., 142264., 129544., 133888., 138232., 142576.,
      129820., 134176., 138532., 142888., 130096., 134464., 138832., 143200.,
      130372., 134752., 139132., 143512., 130648., 135040., 139432., 143824.,
      130924., 135328., 139732., 144136., 131200., 135616., 140032., 144448.,
      90117.,  93366.,  96615.,  99864.,  90306.,  93564.,  96822.,  100080.,
      90495.,  93762.,  97029.,  100296., 90684.,  93960.,  97236.,  100512.,
      90873.,  94158.,  97443.,  100728., 91062.,  94356.,  97650.,  100944.,
      91251.,  94554.,  97857.,  101160., 91440.,  94752.,  98064.,  101376.,
      91629.,  94950.,  98271.,  101592., 91818.,  95148.,  98478.,  101808.,
      92007.,  95346.,  98685.,  102024., 92196.,  95544.,  98892.,  102240.,
      115713., 119466., 123219., 126972., 115938., 119700., 123462., 127224.,
      116163., 119934., 123705., 127476., 116388., 120168., 123948., 127728.,
      116613., 120402., 124191., 127980., 116838., 120636., 124434., 128232.,
      117063., 120870., 124677., 128484., 117288., 121104., 124920., 128736.,
      144724., 149728., 154732., 159736., 145000., 150016., 155032., 160048.,
      145276., 150304., 155332., 160360., 145552., 150592., 155632., 160672.,
      145828., 150880., 155932., 160984., 146104., 151168., 156232., 161296.,
      146380., 151456., 156532., 161608., 146656., 151744., 156832., 161920.,
      100701., 104454., 108207., 111960., 100890., 104652., 108414., 112176.,
      101079., 104850., 108621., 112392., 101268., 105048., 108828., 112608.,
      101457., 105246., 109035., 112824., 101646., 105444., 109242., 113040.,
      101835., 105642., 109449., 113256., 102024., 105840., 109656., 113472.,
      102213., 106038., 109863., 113688., 102402., 106236., 110070., 113904.,
      102591., 106434., 110277., 114120., 102780., 106632., 110484., 114336.,
      128313., 132570., 136827., 141084., 128538., 132804., 137070., 141336.,
      128763., 133038., 137313., 141588., 128988., 133272., 137556., 141840.,
      129213., 133506., 137799., 142092., 129438., 133740., 138042., 142344.,
      129663., 133974., 138285., 142596., 129888., 134208., 138528., 142848.,
      160180., 165856., 171532., 177208., 160456., 166144., 171832., 177520.,
      160732., 166432., 172132., 177832., 161008., 166720., 172432., 178144.,
      161284., 167008., 172732., 178456., 161560., 167296., 173032., 178768.,
      161836., 167584., 173332., 179080., 162112., 167872., 173632., 179392.,
      111285., 115542., 119799., 124056., 111474., 115740., 120006., 124272.,
      111663., 115938., 120213., 124488., 111852., 116136., 120420., 124704.,
      112041., 116334., 120627., 124920., 112230., 116532., 120834., 125136.,
      112419., 116730., 121041., 125352., 112608., 116928., 121248., 125568.,
      112797., 117126., 121455., 125784., 112986., 117324., 121662., 126000.,
      113175., 117522., 121869., 126216., 113364., 117720., 122076., 126432.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID1x14x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5244.,  5728.,  6212.,  6696.,  5272.,  5760.,  6248.,  6736.,  5300.,
      5792.,  6284.,  6776.,  5328.,  5824.,  6320.,  6816.,  5356.,  5856.,
      6356.,  6856.,  5384.,  5888.,  6392.,  6896.,  5412.,  5920.,  6428.,
      6936.,  5440.,  5952.,  6464.,  6976.,  5468.,  5984.,  6500.,  7016.,
      5496.,  6016.,  6536.,  7056.,  5524.,  6048.,  6572.,  7096.,  5552.,
      6080.,  6608.,  7136.,  5580.,  6112.,  6644.,  7176.,  5608.,  6144.,
      6680.,  7216.,  5636.,  6176.,  6716.,  7256.,  5664.,  6208.,  6752.,
      7296.,  5692.,  6240.,  6788.,  7336.,  5720.,  6272.,  6824.,  7376.,
      5748.,  6304.,  6860.,  7416.,  5776.,  6336.,  6896.,  7456.,  5804.,
      6368.,  6932.,  7496.,  5832.,  6400.,  6968.,  7536.,  5860.,  6432.,
      7004.,  7576.,  5888.,  6464.,  7040.,  7616.,  5916.,  6496.,  7076.,
      7656.,  5944.,  6528.,  7112.,  7696.,  5972.,  6560.,  7148.,  7736.,
      6000.,  6592.,  7184.,  7776.,  6812.,  7520.,  8228.,  8936.,  6840.,
      7552.,  8264.,  8976.,  6868.,  7584.,  8300.,  9016.,  6896.,  7616.,
      8336.,  9056.,  6924.,  7648.,  8372.,  9096.,  6952.,  7680.,  8408.,
      9136.,  6980.,  7712.,  8444.,  9176.,  7008.,  7744.,  8480.,  9216.,
      7036.,  7776.,  8516.,  9256.,  7064.,  7808.,  8552.,  9296.,  7092.,
      7840.,  8588.,  9336.,  7120.,  7872.,  8624.,  9376.,  7148.,  7904.,
      8660.,  9416.,  7176.,  7936.,  8696.,  9456.,  7204.,  7968.,  8732.,
      9496.,  7232.,  8000.,  8768.,  9536.,  7260.,  8032.,  8804.,  9576.,
      7288.,  8064.,  8840.,  9616.,  7316.,  8096.,  8876.,  9656.,  7344.,
      8128.,  8912.,  9696.,  7372.,  8160.,  8948.,  9736.,  7400.,  8192.,
      8984.,  9776.,  7428.,  8224.,  9020.,  9816.,  7456.,  8256.,  9056.,
      9856.,  7484.,  8288.,  9092.,  9896.,  7512.,  8320.,  9128.,  9936.,
      7540.,  8352.,  9164.,  9976.,  7568.,  8384.,  9200.,  10016., 8380.,
      9312.,  10244., 11176., 8408.,  9344.,  10280., 11216., 8436.,  9376.,
      10316., 11256., 8464.,  9408.,  10352., 11296., 8492.,  9440.,  10388.,
      11336., 8520.,  9472.,  10424., 11376., 8548.,  9504.,  10460., 11416.,
      8576.,  9536.,  10496., 11456., 8604.,  9568.,  10532., 11496., 8632.,
      9600.,  10568., 11536., 8660.,  9632.,  10604., 11576., 8688.,  9664.,
      10640., 11616., 8716.,  9696.,  10676., 11656., 8744.,  9728.,  10712.,
      11696., 8772.,  9760.,  10748., 11736., 8800.,  9792.,  10784., 11776.,
      8828.,  9824.,  10820., 11816., 8856.,  9856.,  10856., 11856., 8884.,
      9888.,  10892., 11896., 8912.,  9920.,  10928., 11936., 8940.,  9952.,
      10964., 11976., 8968.,  9984.,  11000., 12016., 8996.,  10016., 11036.,
      12056., 9024.,  10048., 11072., 12096., 9052.,  10080., 11108., 12136.,
      9080.,  10112., 11144., 12176., 9108.,  10144., 11180., 12216., 9136.,
      10176., 11216., 12256., 9948.,  11104., 12260., 13416., 9976.,  11136.,
      12296., 13456., 10004., 11168., 12332., 13496., 10032., 11200., 12368.,
      13536., 10060., 11232., 12404., 13576., 10088., 11264., 12440., 13616.,
      10116., 11296., 12476., 13656., 10144., 11328., 12512., 13696., 10172.,
      11360., 12548., 13736., 10200., 11392., 12584., 13776., 10228., 11424.,
      12620., 13816., 10256., 11456., 12656., 13856., 10284., 11488., 12692.,
      13896., 10312., 11520., 12728., 13936., 10340., 11552., 12764., 13976.,
      10368., 11584., 12800., 14016., 10396., 11616., 12836., 14056., 10424.,
      11648., 12872., 14096., 10452., 11680., 12908., 14136., 10480., 11712.,
      12944., 14176., 10508., 11744., 12980., 14216., 10536., 11776., 13016.,
      14256., 10564., 11808., 13052., 14296., 10592., 11840., 13088., 14336.,
      10620., 11872., 13124., 14376., 10648., 11904., 13160., 14416., 10676.,
      11936., 13196., 14456., 10704., 11968., 13232., 14496., 11516., 12896.,
      14276., 15656., 11544., 12928., 14312., 15696., 11572., 12960., 14348.,
      15736., 11600., 12992., 14384., 15776., 11628., 13024., 14420., 15816.,
      11656., 13056., 14456., 15856., 11684., 13088., 14492., 15896., 11712.,
      13120., 14528., 15936., 11740., 13152., 14564., 15976., 11768., 13184.,
      14600., 16016., 11796., 13216., 14636., 16056., 11824., 13248., 14672.,
      16096., 11852., 13280., 14708., 16136., 11880., 13312., 14744., 16176.,
      11908., 13344., 14780., 16216., 11936., 13376., 14816., 16256., 11964.,
      13408., 14852., 16296., 11992., 13440., 14888., 16336., 12020., 13472.,
      14924., 16376., 12048., 13504., 14960., 16416., 12076., 13536., 14996.,
      16456., 12104., 13568., 15032., 16496., 12132., 13600., 15068., 16536.,
      12160., 13632., 15104., 16576., 12188., 13664., 15140., 16616., 12216.,
      13696., 15176., 16656., 12244., 13728., 15212., 16696., 12272., 13760.,
      15248., 16736., 13084., 14688., 16292., 17896., 13112., 14720., 16328.,
      17936., 13140., 14752., 16364., 17976., 13168., 14784., 16400., 18016.,
      13196., 14816., 16436., 18056., 13224., 14848., 16472., 18096., 13252.,
      14880., 16508., 18136., 13280., 14912., 16544., 18176., 13308., 14944.,
      16580., 18216., 13336., 14976., 16616., 18256., 13364., 15008., 16652.,
      18296., 13392., 15040., 16688., 18336., 13420., 15072., 16724., 18376.,
      13448., 15104., 16760., 18416., 13476., 15136., 16796., 18456., 13504.,
      15168., 16832., 18496., 13532., 15200., 16868., 18536., 13560., 15232.,
      16904., 18576., 13588., 15264., 16940., 18616., 13616., 15296., 16976.,
      18656., 13644., 15328., 17012., 18696., 13672., 15360., 17048., 18736.,
      13700., 15392., 17084., 18776., 13728., 15424., 17120., 18816., 13756.,
      15456., 17156., 18856., 13784., 15488., 17192., 18896., 13812., 15520.,
      17228., 18936., 13840., 15552., 17264., 18976., 14652., 16480., 18308.,
      20136., 14680., 16512., 18344., 20176., 14708., 16544., 18380., 20216.,
      14736., 16576., 18416., 20256., 14764., 16608., 18452., 20296., 14792.,
      16640., 18488., 20336., 14820., 16672., 18524., 20376., 14848., 16704.,
      18560., 20416., 14876., 16736., 18596., 20456., 14904., 16768., 18632.,
      20496., 14932., 16800., 18668., 20536., 14960., 16832., 18704., 20576.,
      14988., 16864., 18740., 20616., 15016., 16896., 18776., 20656., 15044.,
      16928., 18812., 20696., 15072., 16960., 18848., 20736., 15100., 16992.,
      18884., 20776., 15128., 17024., 18920., 20816., 15156., 17056., 18956.,
      20856., 15184., 17088., 18992., 20896., 15212., 17120., 19028., 20936.,
      15240., 17152., 19064., 20976., 15268., 17184., 19100., 21016., 15296.,
      17216., 19136., 21056., 15324., 17248., 19172., 21096., 15352., 17280.,
      19208., 21136., 15380., 17312., 19244., 21176., 15408., 17344., 19280.,
      21216.};
  const std::array<int, 4> in_shape = {{1, 14, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41760., 41952., 61140., 61419., 61698., 39900., 40080., 43872., 44064.,
      64209., 64488., 64767., 41880., 42060., 59040., 59301., 86310., 86688.,
      87066., 56223., 56466., 61911., 62172., 90468., 90846., 91224., 58896.,
      59139., 64782., 65043., 94626., 95004., 95382., 61569., 61812., 37356.,
      37512., 54435., 54660., 54885., 35328., 35472., 39072., 39228., 56910.,
      57135., 57360., 36912., 37056.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      15536., 15614., 15692., 15770., 15848., 15926., 16004., 16394., 16472.,
      16550., 16628., 16706., 16784., 16862., 17252., 17330., 17408., 17486.,
      17564., 17642., 17720., 18110., 18188., 18266., 18344., 18422., 18500.,
      18578., 18968., 19046., 19124., 19202., 19280., 19358., 19436., 19826.,
      19904., 19982., 20060., 20138., 20216., 20294., 20684., 20762., 20840.,
      20918., 20996., 21074., 21152.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      81480.,  83520.,  81852.,  83904.,  119220., 122280., 119760., 122838.,
      120300., 123396., 77748.,  79800.,  78096.,  80160.,  85572.,  87744.,
      85944.,  88128.,  125160., 128418., 125700., 128976., 126240., 129534.,
      81576.,  83760.,  81924.,  84120.,  115020., 118080., 115524., 118602.,
      168030., 172620., 168759., 173376., 169488., 174132., 109368., 112446.,
      109836., 112932., 120564., 123822., 121068., 124344., 176049., 180936.,
      176778., 181692., 177507., 182448., 114516., 117792., 114984., 118278.,
      126108., 129564., 126612., 130086., 184068., 189252., 184797., 190008.,
      185526., 190764., 119664., 123138., 120132., 123624., 72540.,  74712.,
      72840.,  75024.,  105612., 108870., 106044., 109320., 106476., 109770.,
      68472.,  70656.,  68748.,  70944.,  75840.,  78144.,  76140.,  78456.,
      110364., 113820., 110796., 114270., 111228., 114720., 71508.,  73824.,
      71784.,  74112.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29320., 31072., 29464., 31228., 29608., 31384., 29752., 31540., 29896.,
      31696., 30040., 31852., 30184., 32008., 30904., 32788., 31048., 32944.,
      31192., 33100., 31336., 33256., 31480., 33412., 31624., 33568., 31768.,
      33724., 32488., 34504., 32632., 34660., 32776., 34816., 32920., 34972.,
      33064., 35128., 33208., 35284., 33352., 35440., 34072., 36220., 34216.,
      36376., 34360., 36532., 34504., 36688., 34648., 36844., 34792., 37000.,
      34936., 37156., 35656., 37936., 35800., 38092., 35944., 38248., 36088.,
      38404., 36232., 38560., 36376., 38716., 36520., 38872., 37240., 39652.,
      37384., 39808., 37528., 39964., 37672., 40120., 37816., 40276., 37960.,
      40432., 38104., 40588., 38824., 41368., 38968., 41524., 39112., 41680.,
      39256., 41836., 39400., 41992., 39544., 42148., 39688., 42304.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      160920., 162960., 165000., 167040., 161652., 163704., 165756., 167808.,
      235380., 238440., 241500., 244560., 236442., 239520., 242598., 245676.,
      237504., 240600., 243696., 246792., 153444., 155496., 157548., 159600.,
      154128., 156192., 158256., 160320., 168972., 171144., 173316., 175488.,
      169704., 171888., 174072., 176256., 247062., 250320., 253578., 256836.,
      248124., 251400., 254676., 257952., 249186., 252480., 255774., 259068.,
      160968., 163152., 165336., 167520., 161652., 163848., 166044., 168240.,
      226980., 230040., 233100., 236160., 227970., 231048., 234126., 237204.,
      331470., 336060., 340650., 345240., 332901., 337518., 342135., 346752.,
      334332., 338976., 343620., 348264., 215658., 218736., 221814., 224892.,
      216576., 219672., 222768., 225864., 237870., 241128., 244386., 247644.,
      238860., 242136., 245412., 248688., 347211., 352098., 356985., 361872.,
      348642., 353556., 358470., 363384., 350073., 355014., 359955., 364896.,
      225756., 229032., 232308., 235584., 226674., 229968., 233262., 236556.,
      248760., 252216., 255672., 259128., 249750., 253224., 256698., 260172.,
      362952., 368136., 373320., 378504., 364383., 369594., 374805., 380016.,
      365814., 371052., 376290., 381528., 235854., 239328., 242802., 246276.,
      236772., 240264., 243756., 247248., 142908., 145080., 147252., 149424.,
      143496., 145680., 147864., 150048., 207966., 211224., 214482., 217740.,
      208812., 212088., 215364., 218640., 209658., 212952., 216246., 219540.,
      134760., 136944., 139128., 141312., 135300., 137496., 139692., 141888.,
      149376., 151680., 153984., 156288., 149964., 152280., 154596., 156912.,
      217272., 220728., 224184., 227640., 218118., 221592., 225066., 228540.,
      218964., 222456., 225948., 229440., 140700., 143016., 145332., 147648.,
      141240., 143568., 145896., 148224.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      56888., 58640., 60392., 62144., 57164., 58928., 60692., 62456., 57440.,
      59216., 60992., 62768., 57716., 59504., 61292., 63080., 57992., 59792.,
      61592., 63392., 58268., 60080., 61892., 63704., 58544., 60368., 62192.,
      64016., 59924., 61808., 63692., 65576., 60200., 62096., 63992., 65888.,
      60476., 62384., 64292., 66200., 60752., 62672., 64592., 66512., 61028.,
      62960., 64892., 66824., 61304., 63248., 65192., 67136., 61580., 63536.,
      65492., 67448., 62960., 64976., 66992., 69008., 63236., 65264., 67292.,
      69320., 63512., 65552., 67592., 69632., 63788., 65840., 67892., 69944.,
      64064., 66128., 68192., 70256., 64340., 66416., 68492., 70568., 64616.,
      66704., 68792., 70880., 65996., 68144., 70292., 72440., 66272., 68432.,
      70592., 72752., 66548., 68720., 70892., 73064., 66824., 69008., 71192.,
      73376., 67100., 69296., 71492., 73688., 67376., 69584., 71792., 74000.,
      67652., 69872., 72092., 74312., 69032., 71312., 73592., 75872., 69308.,
      71600., 73892., 76184., 69584., 71888., 74192., 76496., 69860., 72176.,
      74492., 76808., 70136., 72464., 74792., 77120., 70412., 72752., 75092.,
      77432., 70688., 73040., 75392., 77744., 72068., 74480., 76892., 79304.,
      72344., 74768., 77192., 79616., 72620., 75056., 77492., 79928., 72896.,
      75344., 77792., 80240., 73172., 75632., 78092., 80552., 73448., 75920.,
      78392., 80864., 73724., 76208., 78692., 81176., 75104., 77648., 80192.,
      82736., 75380., 77936., 80492., 83048., 75656., 78224., 80792., 83360.,
      75932., 78512., 81092., 83672., 76208., 78800., 81392., 83984., 76484.,
      79088., 81692., 84296., 76760., 79376., 81992., 84608.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      83328.,  83520.,  83712.,  83904.,  122001., 122280., 122559., 122838.,
      123117., 123396., 79620.,  79800.,  79980.,  80160.,  87552.,  87744.,
      87936.,  88128.,  128139., 128418., 128697., 128976., 129255., 129534.,
      83580.,  83760.,  83940.,  84120.,  117819., 118080., 118341., 118602.,
      172242., 172620., 172998., 173376., 173754., 174132., 112203., 112446.,
      112689., 112932., 123561., 123822., 124083., 124344., 180558., 180936.,
      181314., 181692., 182070., 182448., 117549., 117792., 118035., 118278.,
      129303., 129564., 129825., 130086., 188874., 189252., 189630., 190008.,
      190386., 190764., 122895., 123138., 123381., 123624., 74556.,  74712.,
      74868.,  75024.,  108645., 108870., 109095., 109320., 109545., 109770.,
      70512.,  70656.,  70800.,  70944.,  77988.,  78144.,  78300.,  78456.,
      113595., 113820., 114045., 114270., 114495., 114720., 73680.,  73824.,
      73968.,  74112.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30994., 31072., 31150., 31228., 31306., 31384., 31462., 31540., 31618.,
      31696., 31774., 31852., 31930., 32008., 32710., 32788., 32866., 32944.,
      33022., 33100., 33178., 33256., 33334., 33412., 33490., 33568., 33646.,
      33724., 34426., 34504., 34582., 34660., 34738., 34816., 34894., 34972.,
      35050., 35128., 35206., 35284., 35362., 35440., 36142., 36220., 36298.,
      36376., 36454., 36532., 36610., 36688., 36766., 36844., 36922., 37000.,
      37078., 37156., 37858., 37936., 38014., 38092., 38170., 38248., 38326.,
      38404., 38482., 38560., 38638., 38716., 38794., 38872., 39574., 39652.,
      39730., 39808., 39886., 39964., 40042., 40120., 40198., 40276., 40354.,
      40432., 40510., 40588., 41290., 41368., 41446., 41524., 41602., 41680.,
      41758., 41836., 41914., 41992., 42070., 42148., 42226., 42304.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      162588., 166656., 162960., 167040., 163332., 167424., 163704., 167808.,
      237900., 244002., 238440., 244560., 238980., 245118., 239520., 245676.,
      240060., 246234., 240600., 246792., 155148., 159240., 155496., 159600.,
      155844., 159960., 156192., 160320., 170772., 175104., 171144., 175488.,
      171516., 175872., 171888., 176256., 249780., 256278., 250320., 256836.,
      250860., 257394., 251400., 257952., 251940., 258510., 252480., 259068.,
      162804., 167160., 163152., 167520., 163500., 167880., 163848., 168240.,
      229536., 235638., 230040., 236160., 230544., 236682., 231048., 237204.,
      335331., 344484., 336060., 345240., 336789., 345996., 337518., 346752.,
      338247., 347508., 338976., 348264., 218268., 224406., 218736., 224892.,
      219204., 225378., 219672., 225864., 240624., 247122., 241128., 247644.,
      241632., 248166., 242136., 248688., 351369., 361116., 352098., 361872.,
      352827., 362628., 353556., 363384., 354285., 364140., 355014., 364896.,
      228564., 235098., 229032., 235584., 229500., 236070., 229968., 236556.,
      251712., 258606., 252216., 259128., 252720., 259650., 253224., 260172.,
      367407., 377748., 368136., 378504., 368865., 379260., 369594., 380016.,
      370323., 380772., 371052., 381528., 238860., 245790., 239328., 246276.,
      239796., 246762., 240264., 247248., 144780., 149112., 145080., 149424.,
      145380., 149736., 145680., 150048., 210792., 217290., 211224., 217740.,
      211656., 218190., 212088., 218640., 212520., 219090., 212952., 219540.,
      136668., 141024., 136944., 141312., 137220., 141600., 137496., 141888.,
      151380., 155976., 151680., 156288., 151980., 156600., 152280., 156912.,
      220296., 227190., 220728., 227640., 221160., 228090., 221592., 228540.,
      222024., 228990., 222456., 229440., 142740., 147360., 143016., 147648.,
      143292., 147936., 143568., 148224.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      58496., 61988., 58640., 62144., 58784., 62300., 58928., 62456., 59072.,
      62612., 59216., 62768., 59360., 62924., 59504., 63080., 59648., 63236.,
      59792., 63392., 59936., 63548., 60080., 63704., 60224., 63860., 60368.,
      64016., 61664., 65420., 61808., 65576., 61952., 65732., 62096., 65888.,
      62240., 66044., 62384., 66200., 62528., 66356., 62672., 66512., 62816.,
      66668., 62960., 66824., 63104., 66980., 63248., 67136., 63392., 67292.,
      63536., 67448., 64832., 68852., 64976., 69008., 65120., 69164., 65264.,
      69320., 65408., 69476., 65552., 69632., 65696., 69788., 65840., 69944.,
      65984., 70100., 66128., 70256., 66272., 70412., 66416., 70568., 66560.,
      70724., 66704., 70880., 68000., 72284., 68144., 72440., 68288., 72596.,
      68432., 72752., 68576., 72908., 68720., 73064., 68864., 73220., 69008.,
      73376., 69152., 73532., 69296., 73688., 69440., 73844., 69584., 74000.,
      69728., 74156., 69872., 74312., 71168., 75716., 71312., 75872., 71456.,
      76028., 71600., 76184., 71744., 76340., 71888., 76496., 72032., 76652.,
      72176., 76808., 72320., 76964., 72464., 77120., 72608., 77276., 72752.,
      77432., 72896., 77588., 73040., 77744., 74336., 79148., 74480., 79304.,
      74624., 79460., 74768., 79616., 74912., 79772., 75056., 79928., 75200.,
      80084., 75344., 80240., 75488., 80396., 75632., 80552., 75776., 80708.,
      75920., 80864., 76064., 81020., 76208., 81176., 77504., 82580., 77648.,
      82736., 77792., 82892., 77936., 83048., 78080., 83204., 78224., 83360.,
      78368., 83516., 78512., 83672., 78656., 83828., 78800., 83984., 78944.,
      84140., 79088., 84296., 79232., 84452., 79376., 84608.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      321108., 325176., 329244., 333312., 321840., 325920., 330000., 334080.,
      322572., 326664., 330756., 334848., 323304., 327408., 331512., 335616.,
      469698., 475800., 481902., 488004., 470760., 476880., 483000., 489120.,
      471822., 477960., 484098., 490236., 472884., 479040., 485196., 491352.,
      473946., 480120., 486294., 492468., 475008., 481200., 487392., 493584.,
      306204., 310296., 314388., 318480., 306888., 310992., 315096., 319200.,
      307572., 311688., 315804., 319920., 308256., 312384., 316512., 320640.,
      337212., 341544., 345876., 350208., 337944., 342288., 346632., 350976.,
      338676., 343032., 347388., 351744., 339408., 343776., 348144., 352512.,
      493062., 499560., 506058., 512556., 494124., 500640., 507156., 513672.,
      495186., 501720., 508254., 514788., 496248., 502800., 509352., 515904.,
      497310., 503880., 510450., 517020., 498372., 504960., 511548., 518136.,
      321252., 325608., 329964., 334320., 321936., 326304., 330672., 335040.,
      322620., 327000., 331380., 335760., 323304., 327696., 332088., 336480.,
      452970., 459072., 465174., 471276., 453960., 460080., 466200., 472320.,
      454950., 461088., 467226., 473364., 455940., 462096., 468252., 474408.,
      661509., 670662., 679815., 688968., 662940., 672120., 681300., 690480.,
      664371., 673578., 682785., 691992., 665802., 675036., 684270., 693504.,
      667233., 676494., 685755., 695016., 668664., 677952., 687240., 696528.,
      430398., 436536., 442674., 448812., 431316., 437472., 443628., 449784.,
      432234., 438408., 444582., 450756., 433152., 439344., 445536., 451728.,
      474750., 481248., 487746., 494244., 475740., 482256., 488772., 495288.,
      476730., 483264., 489798., 496332., 477720., 484272., 490824., 497376.,
      692991., 702738., 712485., 722232., 694422., 704196., 713970., 723744.,
      695853., 705654., 715455., 725256., 697284., 707112., 716940., 726768.,
      698715., 708570., 718425., 728280., 700146., 710028., 719910., 729792.,
      450594., 457128., 463662., 470196., 451512., 458064., 464616., 471168.,
      452430., 459000., 465570., 472140., 453348., 459936., 466524., 473112.,
      496530., 503424., 510318., 517212., 497520., 504432., 511344., 518256.,
      498510., 505440., 512370., 519300., 499500., 506448., 513396., 520344.,
      724473., 734814., 745155., 755496., 725904., 736272., 746640., 757008.,
      727335., 737730., 748125., 758520., 728766., 739188., 749610., 760032.,
      730197., 740646., 751095., 761544., 731628., 742104., 752580., 763056.,
      470790., 477720., 484650., 491580., 471708., 478656., 485604., 492552.,
      472626., 479592., 486558., 493524., 473544., 480528., 487512., 494496.,
      285228., 289560., 293892., 298224., 285816., 290160., 294504., 298848.,
      286404., 290760., 295116., 299472., 286992., 291360., 295728., 300096.,
      415086., 421584., 428082., 434580., 415932., 422448., 428964., 435480.,
      416778., 423312., 429846., 436380., 417624., 424176., 430728., 437280.,
      418470., 425040., 431610., 438180., 419316., 425904., 432492., 439080.,
      268980., 273336., 277692., 282048., 269520., 273888., 278256., 282624.,
      270060., 274440., 278820., 283200., 270600., 274992., 279384., 283776.,
      298164., 302760., 307356., 311952., 298752., 303360., 307968., 312576.,
      299340., 303960., 308580., 313200., 299928., 304560., 309192., 313824.,
      433698., 440592., 447486., 454380., 434544., 441456., 448368., 455280.,
      435390., 442320., 449250., 456180., 436236., 443184., 450132., 457080.,
      437082., 444048., 451014., 457980., 437928., 444912., 451896., 458880.,
      280860., 285480., 290100., 294720., 281400., 286032., 290664., 295296.,
      281940., 286584., 291228., 295872., 282480., 287136., 291792., 296448.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      113500., 116992., 120484., 123976., 113776., 117280., 120784., 124288.,
      114052., 117568., 121084., 124600., 114328., 117856., 121384., 124912.,
      114604., 118144., 121684., 125224., 114880., 118432., 121984., 125536.,
      115156., 118720., 122284., 125848., 115432., 119008., 122584., 126160.,
      115708., 119296., 122884., 126472., 115984., 119584., 123184., 126784.,
      116260., 119872., 123484., 127096., 116536., 120160., 123784., 127408.,
      116812., 120448., 124084., 127720., 117088., 120736., 124384., 128032.,
      119572., 123328., 127084., 130840., 119848., 123616., 127384., 131152.,
      120124., 123904., 127684., 131464., 120400., 124192., 127984., 131776.,
      120676., 124480., 128284., 132088., 120952., 124768., 128584., 132400.,
      121228., 125056., 128884., 132712., 121504., 125344., 129184., 133024.,
      121780., 125632., 129484., 133336., 122056., 125920., 129784., 133648.,
      122332., 126208., 130084., 133960., 122608., 126496., 130384., 134272.,
      122884., 126784., 130684., 134584., 123160., 127072., 130984., 134896.,
      125644., 129664., 133684., 137704., 125920., 129952., 133984., 138016.,
      126196., 130240., 134284., 138328., 126472., 130528., 134584., 138640.,
      126748., 130816., 134884., 138952., 127024., 131104., 135184., 139264.,
      127300., 131392., 135484., 139576., 127576., 131680., 135784., 139888.,
      127852., 131968., 136084., 140200., 128128., 132256., 136384., 140512.,
      128404., 132544., 136684., 140824., 128680., 132832., 136984., 141136.,
      128956., 133120., 137284., 141448., 129232., 133408., 137584., 141760.,
      131716., 136000., 140284., 144568., 131992., 136288., 140584., 144880.,
      132268., 136576., 140884., 145192., 132544., 136864., 141184., 145504.,
      132820., 137152., 141484., 145816., 133096., 137440., 141784., 146128.,
      133372., 137728., 142084., 146440., 133648., 138016., 142384., 146752.,
      133924., 138304., 142684., 147064., 134200., 138592., 142984., 147376.,
      134476., 138880., 143284., 147688., 134752., 139168., 143584., 148000.,
      135028., 139456., 143884., 148312., 135304., 139744., 144184., 148624.,
      137788., 142336., 146884., 151432., 138064., 142624., 147184., 151744.,
      138340., 142912., 147484., 152056., 138616., 143200., 147784., 152368.,
      138892., 143488., 148084., 152680., 139168., 143776., 148384., 152992.,
      139444., 144064., 148684., 153304., 139720., 144352., 148984., 153616.,
      139996., 144640., 149284., 153928., 140272., 144928., 149584., 154240.,
      140548., 145216., 149884., 154552., 140824., 145504., 150184., 154864.,
      141100., 145792., 150484., 155176., 141376., 146080., 150784., 155488.,
      143860., 148672., 153484., 158296., 144136., 148960., 153784., 158608.,
      144412., 149248., 154084., 158920., 144688., 149536., 154384., 159232.,
      144964., 149824., 154684., 159544., 145240., 150112., 154984., 159856.,
      145516., 150400., 155284., 160168., 145792., 150688., 155584., 160480.,
      146068., 150976., 155884., 160792., 146344., 151264., 156184., 161104.,
      146620., 151552., 156484., 161416., 146896., 151840., 156784., 161728.,
      147172., 152128., 157084., 162040., 147448., 152416., 157384., 162352.,
      149932., 155008., 160084., 165160., 150208., 155296., 160384., 165472.,
      150484., 155584., 160684., 165784., 150760., 155872., 160984., 166096.,
      151036., 156160., 161284., 166408., 151312., 156448., 161584., 166720.,
      151588., 156736., 161884., 167032., 151864., 157024., 162184., 167344.,
      152140., 157312., 162484., 167656., 152416., 157600., 162784., 167968.,
      152692., 157888., 163084., 168280., 152968., 158176., 163384., 168592.,
      153244., 158464., 163684., 168904., 153520., 158752., 163984., 169216.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      166464., 166656., 166848., 167040., 167232., 167424., 167616., 167808.,
      243723., 244002., 244281., 244560., 244839., 245118., 245397., 245676.,
      245955., 246234., 246513., 246792., 159060., 159240., 159420., 159600.,
      159780., 159960., 160140., 160320., 174912., 175104., 175296., 175488.,
      175680., 175872., 176064., 176256., 255999., 256278., 256557., 256836.,
      257115., 257394., 257673., 257952., 258231., 258510., 258789., 259068.,
      166980., 167160., 167340., 167520., 167700., 167880., 168060., 168240.,
      235377., 235638., 235899., 236160., 236421., 236682., 236943., 237204.,
      344106., 344484., 344862., 345240., 345618., 345996., 346374., 346752.,
      347130., 347508., 347886., 348264., 224163., 224406., 224649., 224892.,
      225135., 225378., 225621., 225864., 246861., 247122., 247383., 247644.,
      247905., 248166., 248427., 248688., 360738., 361116., 361494., 361872.,
      362250., 362628., 363006., 363384., 363762., 364140., 364518., 364896.,
      234855., 235098., 235341., 235584., 235827., 236070., 236313., 236556.,
      258345., 258606., 258867., 259128., 259389., 259650., 259911., 260172.,
      377370., 377748., 378126., 378504., 378882., 379260., 379638., 380016.,
      380394., 380772., 381150., 381528., 245547., 245790., 246033., 246276.,
      246519., 246762., 247005., 247248., 148956., 149112., 149268., 149424.,
      149580., 149736., 149892., 150048., 217065., 217290., 217515., 217740.,
      217965., 218190., 218415., 218640., 218865., 219090., 219315., 219540.,
      140880., 141024., 141168., 141312., 141456., 141600., 141744., 141888.,
      155820., 155976., 156132., 156288., 156444., 156600., 156756., 156912.,
      226965., 227190., 227415., 227640., 227865., 228090., 228315., 228540.,
      228765., 228990., 229215., 229440., 147216., 147360., 147504., 147648.,
      147792., 147936., 148080., 148224.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61910., 61988., 62066., 62144., 62222., 62300., 62378., 62456., 62534.,
      62612., 62690., 62768., 62846., 62924., 63002., 63080., 63158., 63236.,
      63314., 63392., 63470., 63548., 63626., 63704., 63782., 63860., 63938.,
      64016., 65342., 65420., 65498., 65576., 65654., 65732., 65810., 65888.,
      65966., 66044., 66122., 66200., 66278., 66356., 66434., 66512., 66590.,
      66668., 66746., 66824., 66902., 66980., 67058., 67136., 67214., 67292.,
      67370., 67448., 68774., 68852., 68930., 69008., 69086., 69164., 69242.,
      69320., 69398., 69476., 69554., 69632., 69710., 69788., 69866., 69944.,
      70022., 70100., 70178., 70256., 70334., 70412., 70490., 70568., 70646.,
      70724., 70802., 70880., 72206., 72284., 72362., 72440., 72518., 72596.,
      72674., 72752., 72830., 72908., 72986., 73064., 73142., 73220., 73298.,
      73376., 73454., 73532., 73610., 73688., 73766., 73844., 73922., 74000.,
      74078., 74156., 74234., 74312., 75638., 75716., 75794., 75872., 75950.,
      76028., 76106., 76184., 76262., 76340., 76418., 76496., 76574., 76652.,
      76730., 76808., 76886., 76964., 77042., 77120., 77198., 77276., 77354.,
      77432., 77510., 77588., 77666., 77744., 79070., 79148., 79226., 79304.,
      79382., 79460., 79538., 79616., 79694., 79772., 79850., 79928., 80006.,
      80084., 80162., 80240., 80318., 80396., 80474., 80552., 80630., 80708.,
      80786., 80864., 80942., 81020., 81098., 81176., 82502., 82580., 82658.,
      82736., 82814., 82892., 82970., 83048., 83126., 83204., 83282., 83360.,
      83438., 83516., 83594., 83672., 83750., 83828., 83906., 83984., 84062.,
      84140., 84218., 84296., 84374., 84452., 84530., 84608.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      324804., 332928., 325176., 333312., 325548., 333696., 325920., 334080.,
      326292., 334464., 326664., 334848., 327036., 335232., 327408., 335616.,
      475260., 487446., 475800., 488004., 476340., 488562., 476880., 489120.,
      477420., 489678., 477960., 490236., 478500., 490794., 479040., 491352.,
      479580., 491910., 480120., 492468., 480660., 493026., 481200., 493584.,
      309948., 318120., 310296., 318480., 310644., 318840., 310992., 319200.,
      311340., 319560., 311688., 319920., 312036., 320280., 312384., 320640.,
      341172., 349824., 341544., 350208., 341916., 350592., 342288., 350976.,
      342660., 351360., 343032., 351744., 343404., 352128., 343776., 352512.,
      499020., 511998., 499560., 512556., 500100., 513114., 500640., 513672.,
      501180., 514230., 501720., 514788., 502260., 515346., 502800., 515904.,
      503340., 516462., 503880., 517020., 504420., 517578., 504960., 518136.,
      325260., 333960., 325608., 334320., 325956., 334680., 326304., 335040.,
      326652., 335400., 327000., 335760., 327348., 336120., 327696., 336480.,
      458568., 470754., 459072., 471276., 459576., 471798., 460080., 472320.,
      460584., 472842., 461088., 473364., 461592., 473886., 462096., 474408.,
      669933., 688212., 670662., 688968., 671391., 689724., 672120., 690480.,
      672849., 691236., 673578., 691992., 674307., 692748., 675036., 693504.,
      675765., 694260., 676494., 695016., 677223., 695772., 677952., 696528.,
      436068., 448326., 436536., 448812., 437004., 449298., 437472., 449784.,
      437940., 450270., 438408., 450756., 438876., 451242., 439344., 451728.,
      480744., 493722., 481248., 494244., 481752., 494766., 482256., 495288.,
      482760., 495810., 483264., 496332., 483768., 496854., 484272., 497376.,
      702009., 721476., 702738., 722232., 703467., 722988., 704196., 723744.,
      704925., 724500., 705654., 725256., 706383., 726012., 707112., 726768.,
      707841., 727524., 708570., 728280., 709299., 729036., 710028., 729792.,
      456660., 469710., 457128., 470196., 457596., 470682., 458064., 471168.,
      458532., 471654., 459000., 472140., 459468., 472626., 459936., 473112.,
      502920., 516690., 503424., 517212., 503928., 517734., 504432., 518256.,
      504936., 518778., 505440., 519300., 505944., 519822., 506448., 520344.,
      734085., 754740., 734814., 755496., 735543., 756252., 736272., 757008.,
      737001., 757764., 737730., 758520., 738459., 759276., 739188., 760032.,
      739917., 760788., 740646., 761544., 741375., 762300., 742104., 763056.,
      477252., 491094., 477720., 491580., 478188., 492066., 478656., 492552.,
      479124., 493038., 479592., 493524., 480060., 494010., 480528., 494496.,
      289260., 297912., 289560., 298224., 289860., 298536., 290160., 298848.,
      290460., 299160., 290760., 299472., 291060., 299784., 291360., 300096.,
      421152., 434130., 421584., 434580., 422016., 435030., 422448., 435480.,
      422880., 435930., 423312., 436380., 423744., 436830., 424176., 437280.,
      424608., 437730., 425040., 438180., 425472., 438630., 425904., 439080.,
      273060., 281760., 273336., 282048., 273612., 282336., 273888., 282624.,
      274164., 282912., 274440., 283200., 274716., 283488., 274992., 283776.,
      302460., 311640., 302760., 311952., 303060., 312264., 303360., 312576.,
      303660., 312888., 303960., 313200., 304260., 313512., 304560., 313824.,
      440160., 453930., 440592., 454380., 441024., 454830., 441456., 455280.,
      441888., 455730., 442320., 456180., 442752., 456630., 443184., 457080.,
      443616., 457530., 444048., 457980., 444480., 458430., 444912., 458880.,
      285204., 294432., 285480., 294720., 285756., 295008., 286032., 295296.,
      286308., 295584., 286584., 295872., 286860., 296160., 287136., 296448.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      116848., 123820., 116992., 123976., 117136., 124132., 117280., 124288.,
      117424., 124444., 117568., 124600., 117712., 124756., 117856., 124912.,
      118000., 125068., 118144., 125224., 118288., 125380., 118432., 125536.,
      118576., 125692., 118720., 125848., 118864., 126004., 119008., 126160.,
      119152., 126316., 119296., 126472., 119440., 126628., 119584., 126784.,
      119728., 126940., 119872., 127096., 120016., 127252., 120160., 127408.,
      120304., 127564., 120448., 127720., 120592., 127876., 120736., 128032.,
      123184., 130684., 123328., 130840., 123472., 130996., 123616., 131152.,
      123760., 131308., 123904., 131464., 124048., 131620., 124192., 131776.,
      124336., 131932., 124480., 132088., 124624., 132244., 124768., 132400.,
      124912., 132556., 125056., 132712., 125200., 132868., 125344., 133024.,
      125488., 133180., 125632., 133336., 125776., 133492., 125920., 133648.,
      126064., 133804., 126208., 133960., 126352., 134116., 126496., 134272.,
      126640., 134428., 126784., 134584., 126928., 134740., 127072., 134896.,
      129520., 137548., 129664., 137704., 129808., 137860., 129952., 138016.,
      130096., 138172., 130240., 138328., 130384., 138484., 130528., 138640.,
      130672., 138796., 130816., 138952., 130960., 139108., 131104., 139264.,
      131248., 139420., 131392., 139576., 131536., 139732., 131680., 139888.,
      131824., 140044., 131968., 140200., 132112., 140356., 132256., 140512.,
      132400., 140668., 132544., 140824., 132688., 140980., 132832., 141136.,
      132976., 141292., 133120., 141448., 133264., 141604., 133408., 141760.,
      135856., 144412., 136000., 144568., 136144., 144724., 136288., 144880.,
      136432., 145036., 136576., 145192., 136720., 145348., 136864., 145504.,
      137008., 145660., 137152., 145816., 137296., 145972., 137440., 146128.,
      137584., 146284., 137728., 146440., 137872., 146596., 138016., 146752.,
      138160., 146908., 138304., 147064., 138448., 147220., 138592., 147376.,
      138736., 147532., 138880., 147688., 139024., 147844., 139168., 148000.,
      139312., 148156., 139456., 148312., 139600., 148468., 139744., 148624.,
      142192., 151276., 142336., 151432., 142480., 151588., 142624., 151744.,
      142768., 151900., 142912., 152056., 143056., 152212., 143200., 152368.,
      143344., 152524., 143488., 152680., 143632., 152836., 143776., 152992.,
      143920., 153148., 144064., 153304., 144208., 153460., 144352., 153616.,
      144496., 153772., 144640., 153928., 144784., 154084., 144928., 154240.,
      145072., 154396., 145216., 154552., 145360., 154708., 145504., 154864.,
      145648., 155020., 145792., 155176., 145936., 155332., 146080., 155488.,
      148528., 158140., 148672., 158296., 148816., 158452., 148960., 158608.,
      149104., 158764., 149248., 158920., 149392., 159076., 149536., 159232.,
      149680., 159388., 149824., 159544., 149968., 159700., 150112., 159856.,
      150256., 160012., 150400., 160168., 150544., 160324., 150688., 160480.,
      150832., 160636., 150976., 160792., 151120., 160948., 151264., 161104.,
      151408., 161260., 151552., 161416., 151696., 161572., 151840., 161728.,
      151984., 161884., 152128., 162040., 152272., 162196., 152416., 162352.,
      154864., 165004., 155008., 165160., 155152., 165316., 155296., 165472.,
      155440., 165628., 155584., 165784., 155728., 165940., 155872., 166096.,
      156016., 166252., 156160., 166408., 156304., 166564., 156448., 166720.,
      156592., 166876., 156736., 167032., 156880., 167188., 157024., 167344.,
      157168., 167500., 157312., 167656., 157456., 167812., 157600., 167968.,
      157744., 168124., 157888., 168280., 158032., 168436., 158176., 168592.,
      158320., 168748., 158464., 168904., 158608., 169060., 158752., 169216.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      641484.,  649608.,  657732.,  665856.,  642216.,  650352.,  658488.,
      666624.,  642948.,  651096.,  659244.,  667392.,  643680.,  651840.,
      660000.,  668160.,  644412.,  652584.,  660756.,  668928.,  645144.,
      653328.,  661512.,  669696.,  645876.,  654072.,  662268.,  670464.,
      646608.,  654816.,  663024.,  671232.,  938334.,  950520.,  962706.,
      974892.,  939396.,  951600.,  963804.,  976008.,  940458.,  952680.,
      964902.,  977124.,  941520.,  953760.,  966000.,  978240.,  942582.,
      954840.,  967098.,  979356.,  943644.,  955920.,  968196.,  980472.,
      944706.,  957000.,  969294.,  981588.,  945768.,  958080.,  970392.,
      982704.,  946830.,  959160.,  971490.,  983820.,  947892.,  960240.,
      972588.,  984936.,  948954.,  961320.,  973686.,  986052.,  950016.,
      962400.,  974784.,  987168.,  611724.,  619896.,  628068.,  636240.,
      612408.,  620592.,  628776.,  636960.,  613092.,  621288.,  629484.,
      637680.,  613776.,  621984.,  630192.,  638400.,  614460.,  622680.,
      630900.,  639120.,  615144.,  623376.,  631608.,  639840.,  615828.,
      624072.,  632316.,  640560.,  616512.,  624768.,  633024.,  641280.,
      673692.,  682344.,  690996.,  699648.,  674424.,  683088.,  691752.,
      700416.,  675156.,  683832.,  692508.,  701184.,  675888.,  684576.,
      693264.,  701952.,  676620.,  685320.,  694020.,  702720.,  677352.,
      686064.,  694776.,  703488.,  678084.,  686808.,  695532.,  704256.,
      678816.,  687552.,  696288.,  705024.,  985062.,  998040.,  1011018.,
      1023996., 986124.,  999120.,  1012116., 1025112., 987186.,  1000200.,
      1013214., 1026228., 988248.,  1001280., 1014312., 1027344., 989310.,
      1002360., 1015410., 1028460., 990372.,  1003440., 1016508., 1029576.,
      991434.,  1004520., 1017606., 1030692., 992496.,  1005600., 1018704.,
      1031808., 993558.,  1006680., 1019802., 1032924., 994620.,  1007760.,
      1020900., 1034040., 995682.,  1008840., 1021998., 1035156., 996744.,
      1009920., 1023096., 1036272., 641820.,  650520.,  659220.,  667920.,
      642504.,  651216.,  659928.,  668640.,  643188.,  651912.,  660636.,
      669360.,  643872.,  652608.,  661344.,  670080.,  644556.,  653304.,
      662052.,  670800.,  645240.,  654000.,  662760.,  671520.,  645924.,
      654696.,  663468.,  672240.,  646608.,  655392.,  664176.,  672960.,
      904950.,  917136.,  929322.,  941508.,  905940.,  918144.,  930348.,
      942552.,  906930.,  919152.,  931374.,  943596.,  907920.,  920160.,
      932400.,  944640.,  908910.,  921168.,  933426.,  945684.,  909900.,
      922176.,  934452.,  946728.,  910890.,  923184.,  935478.,  947772.,
      911880.,  924192.,  936504.,  948816.,  1321587., 1339866., 1358145.,
      1376424., 1323018., 1341324., 1359630., 1377936., 1324449., 1342782.,
      1361115., 1379448., 1325880., 1344240., 1362600., 1380960., 1327311.,
      1345698., 1364085., 1382472., 1328742., 1347156., 1365570., 1383984.,
      1330173., 1348614., 1367055., 1385496., 1331604., 1350072., 1368540.,
      1387008., 1333035., 1351530., 1370025., 1388520., 1334466., 1352988.,
      1371510., 1390032., 1335897., 1354446., 1372995., 1391544., 1337328.,
      1355904., 1374480., 1393056., 859878.,  872136.,  884394.,  896652.,
      860796.,  873072.,  885348.,  897624.,  861714.,  874008.,  886302.,
      898596.,  862632.,  874944.,  887256.,  899568.,  863550.,  875880.,
      888210.,  900540.,  864468.,  876816.,  889164.,  901512.,  865386.,
      877752.,  890118.,  902484.,  866304.,  878688.,  891072.,  903456.,
      948510.,  961488.,  974466.,  987444.,  949500.,  962496.,  975492.,
      988488.,  950490.,  963504.,  976518.,  989532.,  951480.,  964512.,
      977544.,  990576.,  952470.,  965520.,  978570.,  991620.,  953460.,
      966528.,  979596.,  992664.,  954450.,  967536.,  980622.,  993708.,
      955440.,  968544.,  981648.,  994752.,  1384551., 1404018., 1423485.,
      1442952., 1385982., 1405476., 1424970., 1444464., 1387413., 1406934.,
      1426455., 1445976., 1388844., 1408392., 1427940., 1447488., 1390275.,
      1409850., 1429425., 1449000., 1391706., 1411308., 1430910., 1450512.,
      1393137., 1412766., 1432395., 1452024., 1394568., 1414224., 1433880.,
      1453536., 1395999., 1415682., 1435365., 1455048., 1397430., 1417140.,
      1436850., 1456560., 1398861., 1418598., 1438335., 1458072., 1400292.,
      1420056., 1439820., 1459584., 900270.,  913320.,  926370.,  939420.,
      901188.,  914256.,  927324.,  940392.,  902106.,  915192.,  928278.,
      941364.,  903024.,  916128.,  929232.,  942336.,  903942.,  917064.,
      930186.,  943308.,  904860.,  918000.,  931140.,  944280.,  905778.,
      918936.,  932094.,  945252.,  906696.,  919872.,  933048.,  946224.,
      992070.,  1005840., 1019610., 1033380., 993060.,  1006848., 1020636.,
      1034424., 994050.,  1007856., 1021662., 1035468., 995040.,  1008864.,
      1022688., 1036512., 996030.,  1009872., 1023714., 1037556., 997020.,
      1010880., 1024740., 1038600., 998010.,  1011888., 1025766., 1039644.,
      999000.,  1012896., 1026792., 1040688., 1447515., 1468170., 1488825.,
      1509480., 1448946., 1469628., 1490310., 1510992., 1450377., 1471086.,
      1491795., 1512504., 1451808., 1472544., 1493280., 1514016., 1453239.,
      1474002., 1494765., 1515528., 1454670., 1475460., 1496250., 1517040.,
      1456101., 1476918., 1497735., 1518552., 1457532., 1478376., 1499220.,
      1520064., 1458963., 1479834., 1500705., 1521576., 1460394., 1481292.,
      1502190., 1523088., 1461825., 1482750., 1503675., 1524600., 1463256.,
      1484208., 1505160., 1526112., 940662.,  954504.,  968346.,  982188.,
      941580.,  955440.,  969300.,  983160.,  942498.,  956376.,  970254.,
      984132.,  943416.,  957312.,  971208.,  985104.,  944334.,  958248.,
      972162.,  986076.,  945252.,  959184.,  973116.,  987048.,  946170.,
      960120.,  974070.,  988020.,  947088.,  961056.,  975024.,  988992.,
      569868.,  578520.,  587172.,  595824.,  570456.,  579120.,  587784.,
      596448.,  571044.,  579720.,  588396.,  597072.,  571632.,  580320.,
      589008.,  597696.,  572220.,  580920.,  589620.,  598320.,  572808.,
      581520.,  590232.,  598944.,  573396.,  582120.,  590844.,  599568.,
      573984.,  582720.,  591456.,  600192.,  829326.,  842304.,  855282.,
      868260.,  830172.,  843168.,  856164.,  869160.,  831018.,  844032.,
      857046.,  870060.,  831864.,  844896.,  857928.,  870960.,  832710.,
      845760.,  858810.,  871860.,  833556.,  846624.,  859692.,  872760.,
      834402.,  847488.,  860574.,  873660.,  835248.,  848352.,  861456.,
      874560.,  836094.,  849216.,  862338.,  875460.,  836940.,  850080.,
      863220.,  876360.,  837786.,  850944.,  864102.,  877260.,  838632.,
      851808.,  864984.,  878160.,  537420.,  546120.,  554820.,  563520.,
      537960.,  546672.,  555384.,  564096.,  538500.,  547224.,  555948.,
      564672.,  539040.,  547776.,  556512.,  565248.,  539580.,  548328.,
      557076.,  565824.,  540120.,  548880.,  557640.,  566400.,  540660.,
      549432.,  558204.,  566976.,  541200.,  549984.,  558768.,  567552.,
      595740.,  604920.,  614100.,  623280.,  596328.,  605520.,  614712.,
      623904.,  596916.,  606120.,  615324.,  624528.,  597504.,  606720.,
      615936.,  625152.,  598092.,  607320.,  616548.,  625776.,  598680.,
      607920.,  617160.,  626400.,  599268.,  608520.,  617772.,  627024.,
      599856.,  609120.,  618384.,  627648.,  866550.,  880320.,  894090.,
      907860.,  867396.,  881184.,  894972.,  908760.,  868242.,  882048.,
      895854.,  909660.,  869088.,  882912.,  896736.,  910560.,  869934.,
      883776.,  897618.,  911460.,  870780.,  884640.,  898500.,  912360.,
      871626.,  885504.,  899382.,  913260.,  872472.,  886368.,  900264.,
      914160.,  873318.,  887232.,  901146.,  915060.,  874164.,  888096.,
      902028.,  915960.,  875010.,  888960.,  902910.,  916860.,  875856.,
      889824.,  903792.,  917760.,  561180.,  570408.,  579636.,  588864.,
      561720.,  570960.,  580200.,  589440.,  562260.,  571512.,  580764.,
      590016.,  562800.,  572064.,  581328.,  590592.,  563340.,  572616.,
      581892.,  591168.,  563880.,  573168.,  582456.,  591744.,  564420.,
      573720.,  583020.,  592320.,  564960.,  574272.,  583584.,  592896.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      226724., 233696., 240668., 247640., 227000., 233984., 240968., 247952.,
      227276., 234272., 241268., 248264., 227552., 234560., 241568., 248576.,
      227828., 234848., 241868., 248888., 228104., 235136., 242168., 249200.,
      228380., 235424., 242468., 249512., 228656., 235712., 242768., 249824.,
      228932., 236000., 243068., 250136., 229208., 236288., 243368., 250448.,
      229484., 236576., 243668., 250760., 229760., 236864., 243968., 251072.,
      230036., 237152., 244268., 251384., 230312., 237440., 244568., 251696.,
      230588., 237728., 244868., 252008., 230864., 238016., 245168., 252320.,
      231140., 238304., 245468., 252632., 231416., 238592., 245768., 252944.,
      231692., 238880., 246068., 253256., 231968., 239168., 246368., 253568.,
      232244., 239456., 246668., 253880., 232520., 239744., 246968., 254192.,
      232796., 240032., 247268., 254504., 233072., 240320., 247568., 254816.,
      233348., 240608., 247868., 255128., 233624., 240896., 248168., 255440.,
      233900., 241184., 248468., 255752., 234176., 241472., 248768., 256064.,
      238868., 246368., 253868., 261368., 239144., 246656., 254168., 261680.,
      239420., 246944., 254468., 261992., 239696., 247232., 254768., 262304.,
      239972., 247520., 255068., 262616., 240248., 247808., 255368., 262928.,
      240524., 248096., 255668., 263240., 240800., 248384., 255968., 263552.,
      241076., 248672., 256268., 263864., 241352., 248960., 256568., 264176.,
      241628., 249248., 256868., 264488., 241904., 249536., 257168., 264800.,
      242180., 249824., 257468., 265112., 242456., 250112., 257768., 265424.,
      242732., 250400., 258068., 265736., 243008., 250688., 258368., 266048.,
      243284., 250976., 258668., 266360., 243560., 251264., 258968., 266672.,
      243836., 251552., 259268., 266984., 244112., 251840., 259568., 267296.,
      244388., 252128., 259868., 267608., 244664., 252416., 260168., 267920.,
      244940., 252704., 260468., 268232., 245216., 252992., 260768., 268544.,
      245492., 253280., 261068., 268856., 245768., 253568., 261368., 269168.,
      246044., 253856., 261668., 269480., 246320., 254144., 261968., 269792.,
      251012., 259040., 267068., 275096., 251288., 259328., 267368., 275408.,
      251564., 259616., 267668., 275720., 251840., 259904., 267968., 276032.,
      252116., 260192., 268268., 276344., 252392., 260480., 268568., 276656.,
      252668., 260768., 268868., 276968., 252944., 261056., 269168., 277280.,
      253220., 261344., 269468., 277592., 253496., 261632., 269768., 277904.,
      253772., 261920., 270068., 278216., 254048., 262208., 270368., 278528.,
      254324., 262496., 270668., 278840., 254600., 262784., 270968., 279152.,
      254876., 263072., 271268., 279464., 255152., 263360., 271568., 279776.,
      255428., 263648., 271868., 280088., 255704., 263936., 272168., 280400.,
      255980., 264224., 272468., 280712., 256256., 264512., 272768., 281024.,
      256532., 264800., 273068., 281336., 256808., 265088., 273368., 281648.,
      257084., 265376., 273668., 281960., 257360., 265664., 273968., 282272.,
      257636., 265952., 274268., 282584., 257912., 266240., 274568., 282896.,
      258188., 266528., 274868., 283208., 258464., 266816., 275168., 283520.,
      263156., 271712., 280268., 288824., 263432., 272000., 280568., 289136.,
      263708., 272288., 280868., 289448., 263984., 272576., 281168., 289760.,
      264260., 272864., 281468., 290072., 264536., 273152., 281768., 290384.,
      264812., 273440., 282068., 290696., 265088., 273728., 282368., 291008.,
      265364., 274016., 282668., 291320., 265640., 274304., 282968., 291632.,
      265916., 274592., 283268., 291944., 266192., 274880., 283568., 292256.,
      266468., 275168., 283868., 292568., 266744., 275456., 284168., 292880.,
      267020., 275744., 284468., 293192., 267296., 276032., 284768., 293504.,
      267572., 276320., 285068., 293816., 267848., 276608., 285368., 294128.,
      268124., 276896., 285668., 294440., 268400., 277184., 285968., 294752.,
      268676., 277472., 286268., 295064., 268952., 277760., 286568., 295376.,
      269228., 278048., 286868., 295688., 269504., 278336., 287168., 296000.,
      269780., 278624., 287468., 296312., 270056., 278912., 287768., 296624.,
      270332., 279200., 288068., 296936., 270608., 279488., 288368., 297248.,
      275300., 284384., 293468., 302552., 275576., 284672., 293768., 302864.,
      275852., 284960., 294068., 303176., 276128., 285248., 294368., 303488.,
      276404., 285536., 294668., 303800., 276680., 285824., 294968., 304112.,
      276956., 286112., 295268., 304424., 277232., 286400., 295568., 304736.,
      277508., 286688., 295868., 305048., 277784., 286976., 296168., 305360.,
      278060., 287264., 296468., 305672., 278336., 287552., 296768., 305984.,
      278612., 287840., 297068., 306296., 278888., 288128., 297368., 306608.,
      279164., 288416., 297668., 306920., 279440., 288704., 297968., 307232.,
      279716., 288992., 298268., 307544., 279992., 289280., 298568., 307856.,
      280268., 289568., 298868., 308168., 280544., 289856., 299168., 308480.,
      280820., 290144., 299468., 308792., 281096., 290432., 299768., 309104.,
      281372., 290720., 300068., 309416., 281648., 291008., 300368., 309728.,
      281924., 291296., 300668., 310040., 282200., 291584., 300968., 310352.,
      282476., 291872., 301268., 310664., 282752., 292160., 301568., 310976.,
      287444., 297056., 306668., 316280., 287720., 297344., 306968., 316592.,
      287996., 297632., 307268., 316904., 288272., 297920., 307568., 317216.,
      288548., 298208., 307868., 317528., 288824., 298496., 308168., 317840.,
      289100., 298784., 308468., 318152., 289376., 299072., 308768., 318464.,
      289652., 299360., 309068., 318776., 289928., 299648., 309368., 319088.,
      290204., 299936., 309668., 319400., 290480., 300224., 309968., 319712.,
      290756., 300512., 310268., 320024., 291032., 300800., 310568., 320336.,
      291308., 301088., 310868., 320648., 291584., 301376., 311168., 320960.,
      291860., 301664., 311468., 321272., 292136., 301952., 311768., 321584.,
      292412., 302240., 312068., 321896., 292688., 302528., 312368., 322208.,
      292964., 302816., 312668., 322520., 293240., 303104., 312968., 322832.,
      293516., 303392., 313268., 323144., 293792., 303680., 313568., 323456.,
      294068., 303968., 313868., 323768., 294344., 304256., 314168., 324080.,
      294620., 304544., 314468., 324392., 294896., 304832., 314768., 324704.,
      299588., 309728., 319868., 330008., 299864., 310016., 320168., 330320.,
      300140., 310304., 320468., 330632., 300416., 310592., 320768., 330944.,
      300692., 310880., 321068., 331256., 300968., 311168., 321368., 331568.,
      301244., 311456., 321668., 331880., 301520., 311744., 321968., 332192.,
      301796., 312032., 322268., 332504., 302072., 312320., 322568., 332816.,
      302348., 312608., 322868., 333128., 302624., 312896., 323168., 333440.,
      302900., 313184., 323468., 333752., 303176., 313472., 323768., 334064.,
      303452., 313760., 324068., 334376., 303728., 314048., 324368., 334688.,
      304004., 314336., 324668., 335000., 304280., 314624., 324968., 335312.,
      304556., 314912., 325268., 335624., 304832., 315200., 325568., 335936.,
      305108., 315488., 325868., 336248., 305384., 315776., 326168., 336560.,
      305660., 316064., 326468., 336872., 305936., 316352., 326768., 337184.,
      306212., 316640., 327068., 337496., 306488., 316928., 327368., 337808.,
      306764., 317216., 327668., 338120., 307040., 317504., 327968., 338432.};
  const std::array<int, 4> in_shape = {{3, 11, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      45660., 66567.,  66846.,  67125.,  67404.,  43608., 43788.,
      47964., 69915.,  70194.,  70473.,  70752.,  45768., 45948.,
      64548., 93978.,  94356.,  94734.,  95112.,  61443., 61686.,
      67680., 98514.,  98892.,  99270.,  99648.,  64359., 64602.,
      70812., 103050., 103428., 103806., 104184., 67275., 67518.,
      40836., 59277.,  59502.,  59727.,  59952.,  38604., 38748.,
      42708., 61977.,  62202.,  62427.,  62652.,  40332., 40476.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16926., 17004., 17082., 17160., 17238., 17316., 17394., 17862., 17940.,
      18018., 18096., 18174., 18252., 18330., 18798., 18876., 18954., 19032.,
      19110., 19188., 19266., 19734., 19812., 19890., 19968., 20046., 20124.,
      20202., 20670., 20748., 20826., 20904., 20982., 21060., 21138., 21606.,
      21684., 21762., 21840., 21918., 21996., 22074., 22542., 22620., 22698.,
      22776., 22854., 22932., 23010.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      89088.,  91320.,  129804., 133134., 130344., 133692., 130884., 134250.,
      131424., 134808., 84972.,  87216.,  85320.,  87576.,  93552.,  95928.,
      136284., 139830., 136824., 140388., 137364., 140946., 137904., 141504.,
      89148.,  91536.,  89496.,  91896.,  125748., 129096., 182961., 187956.,
      183690., 188712., 184419., 189468., 185148., 190224., 119520., 122886.,
      119988., 123372., 131796., 135360., 191709., 197028., 192438., 197784.,
      193167., 198540., 193896., 199296., 125136., 128718., 125604., 129204.,
      137844., 141624., 200457., 206100., 201186., 206856., 201915., 207612.,
      202644., 208368., 130752., 134550., 131220., 135036., 79296.,  81672.,
      115008., 118554., 115440., 119004., 115872., 119454., 116304., 119904.,
      74820.,  77208.,  75096.,  77496.,  82896.,  85416.,  120192., 123954.,
      120624., 124404., 121056., 124854., 121488., 125304., 78132.,  80664.,
      78408.,  80952.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31944., 33852., 32088., 34008., 32232., 34164., 32376., 34320., 32520.,
      34476., 32664., 34632., 32808., 34788., 33672., 35724., 33816., 35880.,
      33960., 36036., 34104., 36192., 34248., 36348., 34392., 36504., 34536.,
      36660., 35400., 37596., 35544., 37752., 35688., 37908., 35832., 38064.,
      35976., 38220., 36120., 38376., 36264., 38532., 37128., 39468., 37272.,
      39624., 37416., 39780., 37560., 39936., 37704., 40092., 37848., 40248.,
      37992., 40404., 38856., 41340., 39000., 41496., 39144., 41652., 39288.,
      41808., 39432., 41964., 39576., 42120., 39720., 42276., 40584., 43212.,
      40728., 43368., 40872., 43524., 41016., 43680., 41160., 43836., 41304.,
      43992., 41448., 44148., 42312., 45084., 42456., 45240., 42600., 45396.,
      42744., 45552., 42888., 45708., 43032., 45864., 43176., 46020.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      175944., 178176., 180408., 182640., 256278., 259608., 262938., 266268.,
      257340., 260688., 264036., 267384., 258402., 261768., 265134., 268500.,
      259464., 262848., 266232., 269616., 167700., 169944., 172188., 174432.,
      168384., 170640., 172896., 175152., 184728., 187104., 189480., 191856.,
      269022., 272568., 276114., 279660., 270084., 273648., 277212., 280776.,
      271146., 274728., 278310., 281892., 272208., 275808., 279408., 283008.,
      175908., 178296., 180684., 183072., 176592., 178992., 181392., 183792.,
      248148., 251496., 254844., 258192., 360927., 365922., 370917., 375912.,
      362358., 367380., 372402., 377424., 363789., 368838., 373887., 378936.,
      365220., 370296., 375372., 380448., 235674., 239040., 242406., 245772.,
      236592., 239976., 243360., 246744., 260028., 263592., 267156., 270720.,
      378099., 383418., 388737., 394056., 379530., 384876., 390222., 395568.,
      380961., 386334., 391707., 397080., 382392., 387792., 393192., 398592.,
      246690., 250272., 253854., 257436., 247608., 251208., 254808., 258408.,
      271908., 275688., 279468., 283248., 395271., 400914., 406557., 412200.,
      396702., 402372., 408042., 413712., 398133., 403830., 409527., 415224.,
      399564., 405288., 411012., 416736., 257706., 261504., 265302., 269100.,
      258624., 262440., 266256., 270072., 156216., 158592., 160968., 163344.,
      226470., 230016., 233562., 237108., 227316., 230880., 234444., 238008.,
      228162., 231744., 235326., 238908., 229008., 232608., 236208., 239808.,
      147252., 149640., 152028., 154416., 147792., 150192., 152592., 154992.,
      163272., 165792., 168312., 170832., 236622., 240384., 244146., 247908.,
      237468., 241248., 245028., 248808., 238314., 242112., 245910., 249708.,
      239160., 242976., 246792., 250608., 153732., 156264., 158796., 161328.,
      154272., 156816., 159360., 161904.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61980., 63888., 65796., 67704., 62256., 64176., 66096., 68016., 62532.,
      64464., 66396., 68328., 62808., 64752., 66696., 68640., 63084., 65040.,
      66996., 68952., 63360., 65328., 67296., 69264., 63636., 65616., 67596.,
      69576., 65292., 67344., 69396., 71448., 65568., 67632., 69696., 71760.,
      65844., 67920., 69996., 72072., 66120., 68208., 70296., 72384., 66396.,
      68496., 70596., 72696., 66672., 68784., 70896., 73008., 66948., 69072.,
      71196., 73320., 68604., 70800., 72996., 75192., 68880., 71088., 73296.,
      75504., 69156., 71376., 73596., 75816., 69432., 71664., 73896., 76128.,
      69708., 71952., 74196., 76440., 69984., 72240., 74496., 76752., 70260.,
      72528., 74796., 77064., 71916., 74256., 76596., 78936., 72192., 74544.,
      76896., 79248., 72468., 74832., 77196., 79560., 72744., 75120., 77496.,
      79872., 73020., 75408., 77796., 80184., 73296., 75696., 78096., 80496.,
      73572., 75984., 78396., 80808., 75228., 77712., 80196., 82680., 75504.,
      78000., 80496., 82992., 75780., 78288., 80796., 83304., 76056., 78576.,
      81096., 83616., 76332., 78864., 81396., 83928., 76608., 79152., 81696.,
      84240., 76884., 79440., 81996., 84552., 78540., 81168., 83796., 86424.,
      78816., 81456., 84096., 86736., 79092., 81744., 84396., 87048., 79368.,
      82032., 84696., 87360., 79644., 82320., 84996., 87672., 79920., 82608.,
      85296., 87984., 80196., 82896., 85596., 88296., 81852., 84624., 87396.,
      90168., 82128., 84912., 87696., 90480., 82404., 85200., 87996., 90792.,
      82680., 85488., 88296., 91104., 82956., 85776., 88596., 91416., 83232.,
      86064., 88896., 91728., 83508., 86352., 89196., 92040.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      91128.,  91320.,  132855., 133134., 133413., 133692., 133971., 134250.,
      134529., 134808., 87036.,  87216.,  87396.,  87576.,  95736.,  95928.,
      139551., 139830., 140109., 140388., 140667., 140946., 141225., 141504.,
      91356.,  91536.,  91716.,  91896.,  128835., 129096., 187578., 187956.,
      188334., 188712., 189090., 189468., 189846., 190224., 122643., 122886.,
      123129., 123372., 135099., 135360., 196650., 197028., 197406., 197784.,
      198162., 198540., 198918., 199296., 128475., 128718., 128961., 129204.,
      141363., 141624., 205722., 206100., 206478., 206856., 207234., 207612.,
      207990., 208368., 134307., 134550., 134793., 135036., 81516.,  81672.,
      118329., 118554., 118779., 119004., 119229., 119454., 119679., 119904.,
      77064.,  77208.,  77352.,  77496.,  85260.,  85416.,  123729., 123954.,
      124179., 124404., 124629., 124854., 125079., 125304., 80520.,  80664.,
      80808.,  80952.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33774., 33852., 33930., 34008., 34086., 34164., 34242., 34320., 34398.,
      34476., 34554., 34632., 34710., 34788., 35646., 35724., 35802., 35880.,
      35958., 36036., 36114., 36192., 36270., 36348., 36426., 36504., 36582.,
      36660., 37518., 37596., 37674., 37752., 37830., 37908., 37986., 38064.,
      38142., 38220., 38298., 38376., 38454., 38532., 39390., 39468., 39546.,
      39624., 39702., 39780., 39858., 39936., 40014., 40092., 40170., 40248.,
      40326., 40404., 41262., 41340., 41418., 41496., 41574., 41652., 41730.,
      41808., 41886., 41964., 42042., 42120., 42198., 42276., 43134., 43212.,
      43290., 43368., 43446., 43524., 43602., 43680., 43758., 43836., 43914.,
      43992., 44070., 44148., 45006., 45084., 45162., 45240., 45318., 45396.,
      45474., 45552., 45630., 45708., 45786., 45864., 45942., 46020.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      177804., 182256., 178176., 182640., 259068., 265710., 259608., 266268.,
      260148., 266826., 260688., 267384., 261228., 267942., 261768., 268500.,
      262308., 269058., 262848., 269616., 169596., 174072., 169944., 174432.,
      170292., 174792., 170640., 175152., 186732., 191472., 187104., 191856.,
      272028., 279102., 272568., 279660., 273108., 280218., 273648., 280776.,
      274188., 281334., 274728., 281892., 275268., 282450., 275808., 283008.,
      177948., 182712., 178296., 183072., 178644., 183432., 178992., 183792.,
      250992., 257670., 251496., 258192., 365193., 375156., 365922., 375912.,
      366651., 376668., 367380., 377424., 368109., 378180., 368838., 378936.,
      369567., 379692., 370296., 380448., 238572., 245286., 239040., 245772.,
      239508., 246258., 239976., 246744., 263088., 270198., 263592., 270720.,
      382689., 393300., 383418., 394056., 384147., 394812., 384876., 395568.,
      385605., 396324., 386334., 397080., 387063., 397836., 387792., 398592.,
      249804., 256950., 250272., 257436., 250740., 257922., 251208., 258408.,
      275184., 282726., 275688., 283248., 400185., 411444., 400914., 412200.,
      401643., 412956., 402372., 413712., 403101., 414468., 403830., 415224.,
      404559., 415980., 405288., 416736., 261036., 268614., 261504., 269100.,
      261972., 269586., 262440., 270072., 158292., 163032., 158592., 163344.,
      229584., 236658., 230016., 237108., 230448., 237558., 230880., 238008.,
      231312., 238458., 231744., 238908., 232176., 239358., 232608., 239808.,
      149364., 154128., 149640., 154416., 149916., 154704., 150192., 154992.,
      165492., 170520., 165792., 170832., 239952., 247458., 240384., 247908.,
      240816., 248358., 241248., 248808., 241680., 249258., 242112., 249708.,
      242544., 250158., 242976., 250608., 155988., 161040., 156264., 161328.,
      156540., 161616., 156816., 161904.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      63744., 67548., 63888., 67704., 64032., 67860., 64176., 68016., 64320.,
      68172., 64464., 68328., 64608., 68484., 64752., 68640., 64896., 68796.,
      65040., 68952., 65184., 69108., 65328., 69264., 65472., 69420., 65616.,
      69576., 67200., 71292., 67344., 71448., 67488., 71604., 67632., 71760.,
      67776., 71916., 67920., 72072., 68064., 72228., 68208., 72384., 68352.,
      72540., 68496., 72696., 68640., 72852., 68784., 73008., 68928., 73164.,
      69072., 73320., 70656., 75036., 70800., 75192., 70944., 75348., 71088.,
      75504., 71232., 75660., 71376., 75816., 71520., 75972., 71664., 76128.,
      71808., 76284., 71952., 76440., 72096., 76596., 72240., 76752., 72384.,
      76908., 72528., 77064., 74112., 78780., 74256., 78936., 74400., 79092.,
      74544., 79248., 74688., 79404., 74832., 79560., 74976., 79716., 75120.,
      79872., 75264., 80028., 75408., 80184., 75552., 80340., 75696., 80496.,
      75840., 80652., 75984., 80808., 77568., 82524., 77712., 82680., 77856.,
      82836., 78000., 82992., 78144., 83148., 78288., 83304., 78432., 83460.,
      78576., 83616., 78720., 83772., 78864., 83928., 79008., 84084., 79152.,
      84240., 79296., 84396., 79440., 84552., 81024., 86268., 81168., 86424.,
      81312., 86580., 81456., 86736., 81600., 86892., 81744., 87048., 81888.,
      87204., 82032., 87360., 82176., 87516., 82320., 87672., 82464., 87828.,
      82608., 87984., 82752., 88140., 82896., 88296., 84480., 90012., 84624.,
      90168., 84768., 90324., 84912., 90480., 85056., 90636., 85200., 90792.,
      85344., 90948., 85488., 91104., 85632., 91260., 85776., 91416., 85920.,
      91572., 86064., 91728., 86208., 91884., 86352., 92040.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      351156., 355608., 360060., 364512., 351888., 356352., 360816., 365280.,
      511494., 518136., 524778., 531420., 512556., 519216., 525876., 532536.,
      513618., 520296., 526974., 533652., 514680., 521376., 528072., 534768.,
      515742., 522456., 529170., 535884., 516804., 523536., 530268., 537000.,
      517866., 524616., 531366., 538116., 518928., 525696., 532464., 539232.,
      334716., 339192., 343668., 348144., 335400., 339888., 344376., 348864.,
      336084., 340584., 345084., 349584., 336768., 341280., 345792., 350304.,
      368724., 373464., 378204., 382944., 369456., 374208., 378960., 383712.,
      536982., 544056., 551130., 558204., 538044., 545136., 552228., 559320.,
      539106., 546216., 553326., 560436., 540168., 547296., 554424., 561552.,
      541230., 548376., 555522., 562668., 542292., 549456., 556620., 563784.,
      543354., 550536., 557718., 564900., 544416., 551616., 558816., 566016.,
      351132., 355896., 360660., 365424., 351816., 356592., 361368., 366144.,
      352500., 357288., 362076., 366864., 353184., 357984., 362784., 367584.,
      495306., 501984., 508662., 515340., 496296., 502992., 509688., 516384.,
      720423., 730386., 740349., 750312., 721854., 731844., 741834., 751824.,
      723285., 733302., 743319., 753336., 724716., 734760., 744804., 754848.,
      726147., 736218., 746289., 756360., 727578., 737676., 747774., 757872.,
      729009., 739134., 749259., 759384., 730440., 740592., 750744., 760896.,
      470430., 477144., 483858., 490572., 471348., 478080., 484812., 491544.,
      472266., 479016., 485766., 492516., 473184., 479952., 486720., 493488.,
      519066., 526176., 533286., 540396., 520056., 527184., 534312., 541440.,
      754767., 765378., 775989., 786600., 756198., 766836., 777474., 788112.,
      757629., 768294., 778959., 789624., 759060., 769752., 780444., 791136.,
      760491., 771210., 781929., 792648., 761922., 772668., 783414., 794160.,
      763353., 774126., 784899., 795672., 764784., 775584., 786384., 797184.,
      492462., 499608., 506754., 513900., 493380., 500544., 507708., 514872.,
      494298., 501480., 508662., 515844., 495216., 502416., 509616., 516816.,
      542826., 550368., 557910., 565452., 543816., 551376., 558936., 566496.,
      789111., 800370., 811629., 822888., 790542., 801828., 813114., 824400.,
      791973., 803286., 814599., 825912., 793404., 804744., 816084., 827424.,
      794835., 806202., 817569., 828936., 796266., 807660., 819054., 830448.,
      797697., 809118., 820539., 831960., 799128., 810576., 822024., 833472.,
      514494., 522072., 529650., 537228., 515412., 523008., 530604., 538200.,
      516330., 523944., 531558., 539172., 517248., 524880., 532512., 540144.,
      311844., 316584., 321324., 326064., 312432., 317184., 321936., 326688.,
      452094., 459168., 466242., 473316., 452940., 460032., 467124., 474216.,
      453786., 460896., 468006., 475116., 454632., 461760., 468888., 476016.,
      455478., 462624., 469770., 476916., 456324., 463488., 470652., 477816.,
      457170., 464352., 471534., 478716., 458016., 465216., 472416., 479616.,
      293964., 298728., 303492., 308256., 294504., 299280., 304056., 308832.,
      295044., 299832., 304620., 309408., 295584., 300384., 305184., 309984.,
      325956., 330984., 336012., 341040., 326544., 331584., 336624., 341664.,
      472398., 479904., 487410., 494916., 473244., 480768., 488292., 495816.,
      474090., 481632., 489174., 496716., 474936., 482496., 490056., 497616.,
      475782., 483360., 490938., 498516., 476628., 484224., 491820., 499416.,
      477474., 485088., 492702., 500316., 478320., 485952., 493584., 501216.,
      306924., 311976., 317028., 322080., 307464., 312528., 317592., 322656.,
      308004., 313080., 318156., 323232., 308544., 313632., 318720., 323808.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      123684., 127488., 131292., 135096., 123960., 127776., 131592., 135408.,
      124236., 128064., 131892., 135720., 124512., 128352., 132192., 136032.,
      124788., 128640., 132492., 136344., 125064., 128928., 132792., 136656.,
      125340., 129216., 133092., 136968., 125616., 129504., 133392., 137280.,
      125892., 129792., 133692., 137592., 126168., 130080., 133992., 137904.,
      126444., 130368., 134292., 138216., 126720., 130656., 134592., 138528.,
      126996., 130944., 134892., 138840., 127272., 131232., 135192., 139152.,
      130308., 134400., 138492., 142584., 130584., 134688., 138792., 142896.,
      130860., 134976., 139092., 143208., 131136., 135264., 139392., 143520.,
      131412., 135552., 139692., 143832., 131688., 135840., 139992., 144144.,
      131964., 136128., 140292., 144456., 132240., 136416., 140592., 144768.,
      132516., 136704., 140892., 145080., 132792., 136992., 141192., 145392.,
      133068., 137280., 141492., 145704., 133344., 137568., 141792., 146016.,
      133620., 137856., 142092., 146328., 133896., 138144., 142392., 146640.,
      136932., 141312., 145692., 150072., 137208., 141600., 145992., 150384.,
      137484., 141888., 146292., 150696., 137760., 142176., 146592., 151008.,
      138036., 142464., 146892., 151320., 138312., 142752., 147192., 151632.,
      138588., 143040., 147492., 151944., 138864., 143328., 147792., 152256.,
      139140., 143616., 148092., 152568., 139416., 143904., 148392., 152880.,
      139692., 144192., 148692., 153192., 139968., 144480., 148992., 153504.,
      140244., 144768., 149292., 153816., 140520., 145056., 149592., 154128.,
      143556., 148224., 152892., 157560., 143832., 148512., 153192., 157872.,
      144108., 148800., 153492., 158184., 144384., 149088., 153792., 158496.,
      144660., 149376., 154092., 158808., 144936., 149664., 154392., 159120.,
      145212., 149952., 154692., 159432., 145488., 150240., 154992., 159744.,
      145764., 150528., 155292., 160056., 146040., 150816., 155592., 160368.,
      146316., 151104., 155892., 160680., 146592., 151392., 156192., 160992.,
      146868., 151680., 156492., 161304., 147144., 151968., 156792., 161616.,
      150180., 155136., 160092., 165048., 150456., 155424., 160392., 165360.,
      150732., 155712., 160692., 165672., 151008., 156000., 160992., 165984.,
      151284., 156288., 161292., 166296., 151560., 156576., 161592., 166608.,
      151836., 156864., 161892., 166920., 152112., 157152., 162192., 167232.,
      152388., 157440., 162492., 167544., 152664., 157728., 162792., 167856.,
      152940., 158016., 163092., 168168., 153216., 158304., 163392., 168480.,
      153492., 158592., 163692., 168792., 153768., 158880., 163992., 169104.,
      156804., 162048., 167292., 172536., 157080., 162336., 167592., 172848.,
      157356., 162624., 167892., 173160., 157632., 162912., 168192., 173472.,
      157908., 163200., 168492., 173784., 158184., 163488., 168792., 174096.,
      158460., 163776., 169092., 174408., 158736., 164064., 169392., 174720.,
      159012., 164352., 169692., 175032., 159288., 164640., 169992., 175344.,
      159564., 164928., 170292., 175656., 159840., 165216., 170592., 175968.,
      160116., 165504., 170892., 176280., 160392., 165792., 171192., 176592.,
      163428., 168960., 174492., 180024., 163704., 169248., 174792., 180336.,
      163980., 169536., 175092., 180648., 164256., 169824., 175392., 180960.,
      164532., 170112., 175692., 181272., 164808., 170400., 175992., 181584.,
      165084., 170688., 176292., 181896., 165360., 170976., 176592., 182208.,
      165636., 171264., 176892., 182520., 165912., 171552., 177192., 182832.,
      166188., 171840., 177492., 183144., 166464., 172128., 177792., 183456.,
      166740., 172416., 178092., 183768., 167016., 172704., 178392., 184080.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      182064., 182256., 182448., 182640., 265431., 265710., 265989., 266268.,
      266547., 266826., 267105., 267384., 267663., 267942., 268221., 268500.,
      268779., 269058., 269337., 269616., 173892., 174072., 174252., 174432.,
      174612., 174792., 174972., 175152., 191280., 191472., 191664., 191856.,
      278823., 279102., 279381., 279660., 279939., 280218., 280497., 280776.,
      281055., 281334., 281613., 281892., 282171., 282450., 282729., 283008.,
      182532., 182712., 182892., 183072., 183252., 183432., 183612., 183792.,
      257409., 257670., 257931., 258192., 374778., 375156., 375534., 375912.,
      376290., 376668., 377046., 377424., 377802., 378180., 378558., 378936.,
      379314., 379692., 380070., 380448., 245043., 245286., 245529., 245772.,
      246015., 246258., 246501., 246744., 269937., 270198., 270459., 270720.,
      392922., 393300., 393678., 394056., 394434., 394812., 395190., 395568.,
      395946., 396324., 396702., 397080., 397458., 397836., 398214., 398592.,
      256707., 256950., 257193., 257436., 257679., 257922., 258165., 258408.,
      282465., 282726., 282987., 283248., 411066., 411444., 411822., 412200.,
      412578., 412956., 413334., 413712., 414090., 414468., 414846., 415224.,
      415602., 415980., 416358., 416736., 268371., 268614., 268857., 269100.,
      269343., 269586., 269829., 270072., 162876., 163032., 163188., 163344.,
      236433., 236658., 236883., 237108., 237333., 237558., 237783., 238008.,
      238233., 238458., 238683., 238908., 239133., 239358., 239583., 239808.,
      153984., 154128., 154272., 154416., 154560., 154704., 154848., 154992.,
      170364., 170520., 170676., 170832., 247233., 247458., 247683., 247908.,
      248133., 248358., 248583., 248808., 249033., 249258., 249483., 249708.,
      249933., 250158., 250383., 250608., 160896., 161040., 161184., 161328.,
      161472., 161616., 161760., 161904.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      67470., 67548., 67626., 67704., 67782., 67860., 67938., 68016., 68094.,
      68172., 68250., 68328., 68406., 68484., 68562., 68640., 68718., 68796.,
      68874., 68952., 69030., 69108., 69186., 69264., 69342., 69420., 69498.,
      69576., 71214., 71292., 71370., 71448., 71526., 71604., 71682., 71760.,
      71838., 71916., 71994., 72072., 72150., 72228., 72306., 72384., 72462.,
      72540., 72618., 72696., 72774., 72852., 72930., 73008., 73086., 73164.,
      73242., 73320., 74958., 75036., 75114., 75192., 75270., 75348., 75426.,
      75504., 75582., 75660., 75738., 75816., 75894., 75972., 76050., 76128.,
      76206., 76284., 76362., 76440., 76518., 76596., 76674., 76752., 76830.,
      76908., 76986., 77064., 78702., 78780., 78858., 78936., 79014., 79092.,
      79170., 79248., 79326., 79404., 79482., 79560., 79638., 79716., 79794.,
      79872., 79950., 80028., 80106., 80184., 80262., 80340., 80418., 80496.,
      80574., 80652., 80730., 80808., 82446., 82524., 82602., 82680., 82758.,
      82836., 82914., 82992., 83070., 83148., 83226., 83304., 83382., 83460.,
      83538., 83616., 83694., 83772., 83850., 83928., 84006., 84084., 84162.,
      84240., 84318., 84396., 84474., 84552., 86190., 86268., 86346., 86424.,
      86502., 86580., 86658., 86736., 86814., 86892., 86970., 87048., 87126.,
      87204., 87282., 87360., 87438., 87516., 87594., 87672., 87750., 87828.,
      87906., 87984., 88062., 88140., 88218., 88296., 89934., 90012., 90090.,
      90168., 90246., 90324., 90402., 90480., 90558., 90636., 90714., 90792.,
      90870., 90948., 91026., 91104., 91182., 91260., 91338., 91416., 91494.,
      91572., 91650., 91728., 91806., 91884., 91962., 92040.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      355236., 364128., 355608., 364512., 355980., 364896., 356352., 365280.,
      517596., 530862., 518136., 531420., 518676., 531978., 519216., 532536.,
      519756., 533094., 520296., 533652., 520836., 534210., 521376., 534768.,
      521916., 535326., 522456., 535884., 522996., 536442., 523536., 537000.,
      524076., 537558., 524616., 538116., 525156., 538674., 525696., 539232.,
      338844., 347784., 339192., 348144., 339540., 348504., 339888., 348864.,
      340236., 349224., 340584., 349584., 340932., 349944., 341280., 350304.,
      373092., 382560., 373464., 382944., 373836., 383328., 374208., 383712.,
      543516., 557646., 544056., 558204., 544596., 558762., 545136., 559320.,
      545676., 559878., 546216., 560436., 546756., 560994., 547296., 561552.,
      547836., 562110., 548376., 562668., 548916., 563226., 549456., 563784.,
      549996., 564342., 550536., 564900., 551076., 565458., 551616., 566016.,
      355548., 365064., 355896., 365424., 356244., 365784., 356592., 366144.,
      356940., 366504., 357288., 366864., 357636., 367224., 357984., 367584.,
      501480., 514818., 501984., 515340., 502488., 515862., 502992., 516384.,
      729657., 749556., 730386., 750312., 731115., 751068., 731844., 751824.,
      732573., 752580., 733302., 753336., 734031., 754092., 734760., 754848.,
      735489., 755604., 736218., 756360., 736947., 757116., 737676., 757872.,
      738405., 758628., 739134., 759384., 739863., 760140., 740592., 760896.,
      476676., 490086., 477144., 490572., 477612., 491058., 478080., 491544.,
      478548., 492030., 479016., 492516., 479484., 493002., 479952., 493488.,
      525672., 539874., 526176., 540396., 526680., 540918., 527184., 541440.,
      764649., 785844., 765378., 786600., 766107., 787356., 766836., 788112.,
      767565., 788868., 768294., 789624., 769023., 790380., 769752., 791136.,
      770481., 791892., 771210., 792648., 771939., 793404., 772668., 794160.,
      773397., 794916., 774126., 795672., 774855., 796428., 775584., 797184.,
      499140., 513414., 499608., 513900., 500076., 514386., 500544., 514872.,
      501012., 515358., 501480., 515844., 501948., 516330., 502416., 516816.,
      549864., 564930., 550368., 565452., 550872., 565974., 551376., 566496.,
      799641., 822132., 800370., 822888., 801099., 823644., 801828., 824400.,
      802557., 825156., 803286., 825912., 804015., 826668., 804744., 827424.,
      805473., 828180., 806202., 828936., 806931., 829692., 807660., 830448.,
      808389., 831204., 809118., 831960., 809847., 832716., 810576., 833472.,
      521604., 536742., 522072., 537228., 522540., 537714., 523008., 538200.,
      523476., 538686., 523944., 539172., 524412., 539658., 524880., 540144.,
      316284., 325752., 316584., 326064., 316884., 326376., 317184., 326688.,
      458736., 472866., 459168., 473316., 459600., 473766., 460032., 474216.,
      460464., 474666., 460896., 475116., 461328., 475566., 461760., 476016.,
      462192., 476466., 462624., 476916., 463056., 477366., 463488., 477816.,
      463920., 478266., 464352., 478716., 464784., 479166., 465216., 479616.,
      298452., 307968., 298728., 308256., 299004., 308544., 299280., 308832.,
      299556., 309120., 299832., 309408., 300108., 309696., 300384., 309984.,
      330684., 340728., 330984., 341040., 331284., 341352., 331584., 341664.,
      479472., 494466., 479904., 494916., 480336., 495366., 480768., 495816.,
      481200., 496266., 481632., 496716., 482064., 497166., 482496., 497616.,
      482928., 498066., 483360., 498516., 483792., 498966., 484224., 499416.,
      484656., 499866., 485088., 500316., 485520., 500766., 485952., 501216.,
      311700., 321792., 311976., 322080., 312252., 322368., 312528., 322656.,
      312804., 322944., 313080., 323232., 313356., 323520., 313632., 323808.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      127344., 134940., 127488., 135096., 127632., 135252., 127776., 135408.,
      127920., 135564., 128064., 135720., 128208., 135876., 128352., 136032.,
      128496., 136188., 128640., 136344., 128784., 136500., 128928., 136656.,
      129072., 136812., 129216., 136968., 129360., 137124., 129504., 137280.,
      129648., 137436., 129792., 137592., 129936., 137748., 130080., 137904.,
      130224., 138060., 130368., 138216., 130512., 138372., 130656., 138528.,
      130800., 138684., 130944., 138840., 131088., 138996., 131232., 139152.,
      134256., 142428., 134400., 142584., 134544., 142740., 134688., 142896.,
      134832., 143052., 134976., 143208., 135120., 143364., 135264., 143520.,
      135408., 143676., 135552., 143832., 135696., 143988., 135840., 144144.,
      135984., 144300., 136128., 144456., 136272., 144612., 136416., 144768.,
      136560., 144924., 136704., 145080., 136848., 145236., 136992., 145392.,
      137136., 145548., 137280., 145704., 137424., 145860., 137568., 146016.,
      137712., 146172., 137856., 146328., 138000., 146484., 138144., 146640.,
      141168., 149916., 141312., 150072., 141456., 150228., 141600., 150384.,
      141744., 150540., 141888., 150696., 142032., 150852., 142176., 151008.,
      142320., 151164., 142464., 151320., 142608., 151476., 142752., 151632.,
      142896., 151788., 143040., 151944., 143184., 152100., 143328., 152256.,
      143472., 152412., 143616., 152568., 143760., 152724., 143904., 152880.,
      144048., 153036., 144192., 153192., 144336., 153348., 144480., 153504.,
      144624., 153660., 144768., 153816., 144912., 153972., 145056., 154128.,
      148080., 157404., 148224., 157560., 148368., 157716., 148512., 157872.,
      148656., 158028., 148800., 158184., 148944., 158340., 149088., 158496.,
      149232., 158652., 149376., 158808., 149520., 158964., 149664., 159120.,
      149808., 159276., 149952., 159432., 150096., 159588., 150240., 159744.,
      150384., 159900., 150528., 160056., 150672., 160212., 150816., 160368.,
      150960., 160524., 151104., 160680., 151248., 160836., 151392., 160992.,
      151536., 161148., 151680., 161304., 151824., 161460., 151968., 161616.,
      154992., 164892., 155136., 165048., 155280., 165204., 155424., 165360.,
      155568., 165516., 155712., 165672., 155856., 165828., 156000., 165984.,
      156144., 166140., 156288., 166296., 156432., 166452., 156576., 166608.,
      156720., 166764., 156864., 166920., 157008., 167076., 157152., 167232.,
      157296., 167388., 157440., 167544., 157584., 167700., 157728., 167856.,
      157872., 168012., 158016., 168168., 158160., 168324., 158304., 168480.,
      158448., 168636., 158592., 168792., 158736., 168948., 158880., 169104.,
      161904., 172380., 162048., 172536., 162192., 172692., 162336., 172848.,
      162480., 173004., 162624., 173160., 162768., 173316., 162912., 173472.,
      163056., 173628., 163200., 173784., 163344., 173940., 163488., 174096.,
      163632., 174252., 163776., 174408., 163920., 174564., 164064., 174720.,
      164208., 174876., 164352., 175032., 164496., 175188., 164640., 175344.,
      164784., 175500., 164928., 175656., 165072., 175812., 165216., 175968.,
      165360., 176124., 165504., 176280., 165648., 176436., 165792., 176592.,
      168816., 179868., 168960., 180024., 169104., 180180., 169248., 180336.,
      169392., 180492., 169536., 180648., 169680., 180804., 169824., 180960.,
      169968., 181116., 170112., 181272., 170256., 181428., 170400., 181584.,
      170544., 181740., 170688., 181896., 170832., 182052., 170976., 182208.,
      171120., 182364., 171264., 182520., 171408., 182676., 171552., 182832.,
      171696., 182988., 171840., 183144., 171984., 183300., 172128., 183456.,
      172272., 183612., 172416., 183768., 172560., 183924., 172704., 184080.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      701580.,  710472.,  719364.,  728256.,  702312.,  711216.,  720120.,
      729024.,  703044.,  711960.,  720876.,  729792.,  703776.,  712704.,
      721632.,  730560.,  1021926., 1035192., 1048458., 1061724., 1022988.,
      1036272., 1049556., 1062840., 1024050., 1037352., 1050654., 1063956.,
      1025112., 1038432., 1051752., 1065072., 1026174., 1039512., 1052850.,
      1066188., 1027236., 1040592., 1053948., 1067304., 1028298., 1041672.,
      1055046., 1068420., 1029360., 1042752., 1056144., 1069536., 1030422.,
      1043832., 1057242., 1070652., 1031484., 1044912., 1058340., 1071768.,
      1032546., 1045992., 1059438., 1072884., 1033608., 1047072., 1060536.,
      1074000., 1034670., 1048152., 1061634., 1075116., 1035732., 1049232.,
      1062732., 1076232., 1036794., 1050312., 1063830., 1077348., 1037856.,
      1051392., 1064928., 1078464., 668748.,  677688.,  686628.,  695568.,
      669432.,  678384.,  687336.,  696288.,  670116.,  679080.,  688044.,
      697008.,  670800.,  679776.,  688752.,  697728.,  671484.,  680472.,
      689460.,  698448.,  672168.,  681168.,  690168.,  699168.,  672852.,
      681864.,  690876.,  699888.,  673536.,  682560.,  691584.,  700608.,
      736716.,  746184.,  755652.,  765120.,  737448.,  746928.,  756408.,
      765888.,  738180.,  747672.,  757164.,  766656.,  738912.,  748416.,
      757920.,  767424.,  1072902., 1087032., 1101162., 1115292., 1073964.,
      1088112., 1102260., 1116408., 1075026., 1089192., 1103358., 1117524.,
      1076088., 1090272., 1104456., 1118640., 1077150., 1091352., 1105554.,
      1119756., 1078212., 1092432., 1106652., 1120872., 1079274., 1093512.,
      1107750., 1121988., 1080336., 1094592., 1108848., 1123104., 1081398.,
      1095672., 1109946., 1124220., 1082460., 1096752., 1111044., 1125336.,
      1083522., 1097832., 1112142., 1126452., 1084584., 1098912., 1113240.,
      1127568., 1085646., 1099992., 1114338., 1128684., 1086708., 1101072.,
      1115436., 1129800., 1087770., 1102152., 1116534., 1130916., 1088832.,
      1103232., 1117632., 1132032., 701580.,  711096.,  720612.,  730128.,
      702264.,  711792.,  721320.,  730848.,  702948.,  712488.,  722028.,
      731568.,  703632.,  713184.,  722736.,  732288.,  704316.,  713880.,
      723444.,  733008.,  705000.,  714576.,  724152.,  733728.,  705684.,
      715272.,  724860.,  734448.,  706368.,  715968.,  725568.,  735168.,
      989622.,  1002960., 1016298., 1029636., 990612.,  1003968., 1017324.,
      1030680., 991602.,  1004976., 1018350., 1031724., 992592.,  1005984.,
      1019376., 1032768., 1439415., 1459314., 1479213., 1499112., 1440846.,
      1460772., 1480698., 1500624., 1442277., 1462230., 1482183., 1502136.,
      1443708., 1463688., 1483668., 1503648., 1445139., 1465146., 1485153.,
      1505160., 1446570., 1466604., 1486638., 1506672., 1448001., 1468062.,
      1488123., 1508184., 1449432., 1469520., 1489608., 1509696., 1450863.,
      1470978., 1491093., 1511208., 1452294., 1472436., 1492578., 1512720.,
      1453725., 1473894., 1494063., 1514232., 1455156., 1475352., 1495548.,
      1515744., 1456587., 1476810., 1497033., 1517256., 1458018., 1478268.,
      1498518., 1518768., 1459449., 1479726., 1500003., 1520280., 1460880.,
      1481184., 1501488., 1521792., 939942.,  953352.,  966762.,  980172.,
      940860.,  954288.,  967716.,  981144.,  941778.,  955224.,  968670.,
      982116.,  942696.,  956160.,  969624.,  983088.,  943614.,  957096.,
      970578.,  984060.,  944532.,  958032.,  971532.,  985032.,  945450.,
      958968.,  972486.,  986004.,  946368.,  959904.,  973440.,  986976.,
      1037142., 1051344., 1065546., 1079748., 1038132., 1052352., 1066572.,
      1080792., 1039122., 1053360., 1067598., 1081836., 1040112., 1054368.,
      1068624., 1082880., 1508103., 1529298., 1550493., 1571688., 1509534.,
      1530756., 1551978., 1573200., 1510965., 1532214., 1553463., 1574712.,
      1512396., 1533672., 1554948., 1576224., 1513827., 1535130., 1556433.,
      1577736., 1515258., 1536588., 1557918., 1579248., 1516689., 1538046.,
      1559403., 1580760., 1518120., 1539504., 1560888., 1582272., 1519551.,
      1540962., 1562373., 1583784., 1520982., 1542420., 1563858., 1585296.,
      1522413., 1543878., 1565343., 1586808., 1523844., 1545336., 1566828.,
      1588320., 1525275., 1546794., 1568313., 1589832., 1526706., 1548252.,
      1569798., 1591344., 1528137., 1549710., 1571283., 1592856., 1529568.,
      1551168., 1572768., 1594368., 984006.,  998280.,  1012554., 1026828.,
      984924.,  999216.,  1013508., 1027800., 985842.,  1000152., 1014462.,
      1028772., 986760.,  1001088., 1015416., 1029744., 987678.,  1002024.,
      1016370., 1030716., 988596.,  1002960., 1017324., 1031688., 989514.,
      1003896., 1018278., 1032660., 990432.,  1004832., 1019232., 1033632.,
      1084662., 1099728., 1114794., 1129860., 1085652., 1100736., 1115820.,
      1130904., 1086642., 1101744., 1116846., 1131948., 1087632., 1102752.,
      1117872., 1132992., 1576791., 1599282., 1621773., 1644264., 1578222.,
      1600740., 1623258., 1645776., 1579653., 1602198., 1624743., 1647288.,
      1581084., 1603656., 1626228., 1648800., 1582515., 1605114., 1627713.,
      1650312., 1583946., 1606572., 1629198., 1651824., 1585377., 1608030.,
      1630683., 1653336., 1586808., 1609488., 1632168., 1654848., 1588239.,
      1610946., 1633653., 1656360., 1589670., 1612404., 1635138., 1657872.,
      1591101., 1613862., 1636623., 1659384., 1592532., 1615320., 1638108.,
      1660896., 1593963., 1616778., 1639593., 1662408., 1595394., 1618236.,
      1641078., 1663920., 1596825., 1619694., 1642563., 1665432., 1598256.,
      1621152., 1644048., 1666944., 1028070., 1043208., 1058346., 1073484.,
      1028988., 1044144., 1059300., 1074456., 1029906., 1045080., 1060254.,
      1075428., 1030824., 1046016., 1061208., 1076400., 1031742., 1046952.,
      1062162., 1077372., 1032660., 1047888., 1063116., 1078344., 1033578.,
      1048824., 1064070., 1079316., 1034496., 1049760., 1065024., 1080288.,
      623100.,  632568.,  642036.,  651504.,  623688.,  633168.,  642648.,
      652128.,  624276.,  633768.,  643260.,  652752.,  624864.,  634368.,
      643872.,  653376.,  903342.,  917472.,  931602.,  945732.,  904188.,
      918336.,  932484.,  946632.,  905034.,  919200.,  933366.,  947532.,
      905880.,  920064.,  934248.,  948432.,  906726.,  920928.,  935130.,
      949332.,  907572.,  921792.,  936012.,  950232.,  908418.,  922656.,
      936894.,  951132.,  909264.,  923520.,  937776.,  952032.,  910110.,
      924384.,  938658.,  952932.,  910956.,  925248.,  939540.,  953832.,
      911802.,  926112.,  940422.,  954732.,  912648.,  926976.,  941304.,
      955632.,  913494.,  927840.,  942186.,  956532.,  914340.,  928704.,
      943068.,  957432.,  915186.,  929568.,  943950.,  958332.,  916032.,
      930432.,  944832.,  959232.,  587388.,  596904.,  606420.,  615936.,
      587928.,  597456.,  606984.,  616512.,  588468.,  598008.,  607548.,
      617088.,  589008.,  598560.,  608112.,  617664.,  589548.,  599112.,
      608676.,  618240.,  590088.,  599664.,  609240.,  618816.,  590628.,
      600216.,  609804.,  619392.,  591168.,  600768.,  610368.,  619968.,
      651324.,  661368.,  671412.,  681456.,  651912.,  661968.,  672024.,
      682080.,  652500.,  662568.,  672636.,  682704.,  653088.,  663168.,
      673248.,  683328.,  943950.,  958944.,  973938.,  988932.,  944796.,
      959808.,  974820.,  989832.,  945642.,  960672.,  975702.,  990732.,
      946488.,  961536.,  976584.,  991632.,  947334.,  962400.,  977466.,
      992532.,  948180.,  963264.,  978348.,  993432.,  949026.,  964128.,
      979230.,  994332.,  949872.,  964992.,  980112.,  995232.,  950718.,
      965856.,  980994.,  996132.,  951564.,  966720.,  981876.,  997032.,
      952410.,  967584.,  982758.,  997932.,  953256.,  968448.,  983640.,
      998832.,  954102.,  969312.,  984522.,  999732.,  954948.,  970176.,
      985404.,  1000632., 955794.,  971040.,  986286.,  1001532., 956640.,
      971904.,  987168.,  1002432., 613308.,  623400.,  633492.,  643584.,
      613848.,  623952.,  634056.,  644160.,  614388.,  624504.,  634620.,
      644736.,  614928.,  625056.,  635184.,  645312.,  615468.,  625608.,
      635748.,  645888.,  616008.,  626160.,  636312.,  646464.,  616548.,
      626712.,  636876.,  647040.,  617088.,  627264.,  637440.,  647616.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      247092., 254688., 262284., 269880., 247368., 254976., 262584., 270192.,
      247644., 255264., 262884., 270504., 247920., 255552., 263184., 270816.,
      248196., 255840., 263484., 271128., 248472., 256128., 263784., 271440.,
      248748., 256416., 264084., 271752., 249024., 256704., 264384., 272064.,
      249300., 256992., 264684., 272376., 249576., 257280., 264984., 272688.,
      249852., 257568., 265284., 273000., 250128., 257856., 265584., 273312.,
      250404., 258144., 265884., 273624., 250680., 258432., 266184., 273936.,
      250956., 258720., 266484., 274248., 251232., 259008., 266784., 274560.,
      251508., 259296., 267084., 274872., 251784., 259584., 267384., 275184.,
      252060., 259872., 267684., 275496., 252336., 260160., 267984., 275808.,
      252612., 260448., 268284., 276120., 252888., 260736., 268584., 276432.,
      253164., 261024., 268884., 276744., 253440., 261312., 269184., 277056.,
      253716., 261600., 269484., 277368., 253992., 261888., 269784., 277680.,
      254268., 262176., 270084., 277992., 254544., 262464., 270384., 278304.,
      260340., 268512., 276684., 284856., 260616., 268800., 276984., 285168.,
      260892., 269088., 277284., 285480., 261168., 269376., 277584., 285792.,
      261444., 269664., 277884., 286104., 261720., 269952., 278184., 286416.,
      261996., 270240., 278484., 286728., 262272., 270528., 278784., 287040.,
      262548., 270816., 279084., 287352., 262824., 271104., 279384., 287664.,
      263100., 271392., 279684., 287976., 263376., 271680., 279984., 288288.,
      263652., 271968., 280284., 288600., 263928., 272256., 280584., 288912.,
      264204., 272544., 280884., 289224., 264480., 272832., 281184., 289536.,
      264756., 273120., 281484., 289848., 265032., 273408., 281784., 290160.,
      265308., 273696., 282084., 290472., 265584., 273984., 282384., 290784.,
      265860., 274272., 282684., 291096., 266136., 274560., 282984., 291408.,
      266412., 274848., 283284., 291720., 266688., 275136., 283584., 292032.,
      266964., 275424., 283884., 292344., 267240., 275712., 284184., 292656.,
      267516., 276000., 284484., 292968., 267792., 276288., 284784., 293280.,
      273588., 282336., 291084., 299832., 273864., 282624., 291384., 300144.,
      274140., 282912., 291684., 300456., 274416., 283200., 291984., 300768.,
      274692., 283488., 292284., 301080., 274968., 283776., 292584., 301392.,
      275244., 284064., 292884., 301704., 275520., 284352., 293184., 302016.,
      275796., 284640., 293484., 302328., 276072., 284928., 293784., 302640.,
      276348., 285216., 294084., 302952., 276624., 285504., 294384., 303264.,
      276900., 285792., 294684., 303576., 277176., 286080., 294984., 303888.,
      277452., 286368., 295284., 304200., 277728., 286656., 295584., 304512.,
      278004., 286944., 295884., 304824., 278280., 287232., 296184., 305136.,
      278556., 287520., 296484., 305448., 278832., 287808., 296784., 305760.,
      279108., 288096., 297084., 306072., 279384., 288384., 297384., 306384.,
      279660., 288672., 297684., 306696., 279936., 288960., 297984., 307008.,
      280212., 289248., 298284., 307320., 280488., 289536., 298584., 307632.,
      280764., 289824., 298884., 307944., 281040., 290112., 299184., 308256.,
      286836., 296160., 305484., 314808., 287112., 296448., 305784., 315120.,
      287388., 296736., 306084., 315432., 287664., 297024., 306384., 315744.,
      287940., 297312., 306684., 316056., 288216., 297600., 306984., 316368.,
      288492., 297888., 307284., 316680., 288768., 298176., 307584., 316992.,
      289044., 298464., 307884., 317304., 289320., 298752., 308184., 317616.,
      289596., 299040., 308484., 317928., 289872., 299328., 308784., 318240.,
      290148., 299616., 309084., 318552., 290424., 299904., 309384., 318864.,
      290700., 300192., 309684., 319176., 290976., 300480., 309984., 319488.,
      291252., 300768., 310284., 319800., 291528., 301056., 310584., 320112.,
      291804., 301344., 310884., 320424., 292080., 301632., 311184., 320736.,
      292356., 301920., 311484., 321048., 292632., 302208., 311784., 321360.,
      292908., 302496., 312084., 321672., 293184., 302784., 312384., 321984.,
      293460., 303072., 312684., 322296., 293736., 303360., 312984., 322608.,
      294012., 303648., 313284., 322920., 294288., 303936., 313584., 323232.,
      300084., 309984., 319884., 329784., 300360., 310272., 320184., 330096.,
      300636., 310560., 320484., 330408., 300912., 310848., 320784., 330720.,
      301188., 311136., 321084., 331032., 301464., 311424., 321384., 331344.,
      301740., 311712., 321684., 331656., 302016., 312000., 321984., 331968.,
      302292., 312288., 322284., 332280., 302568., 312576., 322584., 332592.,
      302844., 312864., 322884., 332904., 303120., 313152., 323184., 333216.,
      303396., 313440., 323484., 333528., 303672., 313728., 323784., 333840.,
      303948., 314016., 324084., 334152., 304224., 314304., 324384., 334464.,
      304500., 314592., 324684., 334776., 304776., 314880., 324984., 335088.,
      305052., 315168., 325284., 335400., 305328., 315456., 325584., 335712.,
      305604., 315744., 325884., 336024., 305880., 316032., 326184., 336336.,
      306156., 316320., 326484., 336648., 306432., 316608., 326784., 336960.,
      306708., 316896., 327084., 337272., 306984., 317184., 327384., 337584.,
      307260., 317472., 327684., 337896., 307536., 317760., 327984., 338208.,
      313332., 323808., 334284., 344760., 313608., 324096., 334584., 345072.,
      313884., 324384., 334884., 345384., 314160., 324672., 335184., 345696.,
      314436., 324960., 335484., 346008., 314712., 325248., 335784., 346320.,
      314988., 325536., 336084., 346632., 315264., 325824., 336384., 346944.,
      315540., 326112., 336684., 347256., 315816., 326400., 336984., 347568.,
      316092., 326688., 337284., 347880., 316368., 326976., 337584., 348192.,
      316644., 327264., 337884., 348504., 316920., 327552., 338184., 348816.,
      317196., 327840., 338484., 349128., 317472., 328128., 338784., 349440.,
      317748., 328416., 339084., 349752., 318024., 328704., 339384., 350064.,
      318300., 328992., 339684., 350376., 318576., 329280., 339984., 350688.,
      318852., 329568., 340284., 351000., 319128., 329856., 340584., 351312.,
      319404., 330144., 340884., 351624., 319680., 330432., 341184., 351936.,
      319956., 330720., 341484., 352248., 320232., 331008., 341784., 352560.,
      320508., 331296., 342084., 352872., 320784., 331584., 342384., 353184.,
      326580., 337632., 348684., 359736., 326856., 337920., 348984., 360048.,
      327132., 338208., 349284., 360360., 327408., 338496., 349584., 360672.,
      327684., 338784., 349884., 360984., 327960., 339072., 350184., 361296.,
      328236., 339360., 350484., 361608., 328512., 339648., 350784., 361920.,
      328788., 339936., 351084., 362232., 329064., 340224., 351384., 362544.,
      329340., 340512., 351684., 362856., 329616., 340800., 351984., 363168.,
      329892., 341088., 352284., 363480., 330168., 341376., 352584., 363792.,
      330444., 341664., 352884., 364104., 330720., 341952., 353184., 364416.,
      330996., 342240., 353484., 364728., 331272., 342528., 353784., 365040.,
      331548., 342816., 354084., 365352., 331824., 343104., 354384., 365664.,
      332100., 343392., 354684., 365976., 332376., 343680., 354984., 366288.,
      332652., 343968., 355284., 366600., 332928., 344256., 355584., 366912.,
      333204., 344544., 355884., 367224., 333480., 344832., 356184., 367536.,
      333756., 345120., 356484., 367848., 334032., 345408., 356784., 368160.};
  const std::array<int, 4> in_shape = {{3, 11, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      105258., 105636., 137796., 138288., 101352., 101712., 102072.,
      110550., 110928., 144684., 145176., 106392., 106752., 107112.,
      148689., 149202., 194430., 195096., 142830., 143316., 143802.,
      155871., 156384., 203754., 204420., 149634., 150120., 150606.,
      163053., 163566., 213078., 213744., 156438., 156924., 157410.,
      93918.,  94224.,  122508., 122904., 89760.,  90048.,  90336.,
      98202.,  98508.,  128052., 128448., 93792.,  94080.,  94368.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19706., 19784., 19862., 19940., 20018., 20096., 20174., 20798., 20876.,
      20954., 21032., 21110., 21188., 21266., 21890., 21968., 22046., 22124.,
      22202., 22280., 22358., 22982., 23060., 23138., 23216., 23294., 23372.,
      23450., 24074., 24152., 24230., 24308., 24386., 24464., 24542., 25166.,
      25244., 25322., 25400., 25478., 25556., 25634., 26258., 26336., 26414.,
      26492., 26570., 26648., 26726.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      206610., 210516., 207348., 211272., 270384., 275592., 271344., 276576.,
      198798., 202704., 199500., 203424., 200202., 204144., 216942., 221100.,
      217680., 221856., 283824., 289368., 284784., 290352., 208626., 212784.,
      209328., 213504., 210030., 214224., 291519., 297378., 292518., 298404.,
      381048., 388860., 382344., 390192., 279801., 285660., 280746., 286632.,
      281691., 287604., 305505., 311742., 306504., 312768., 399192., 407508.,
      400488., 408840., 293031., 299268., 293976., 300240., 294921., 301212.,
      319491., 326106., 320490., 327132., 417336., 426156., 418632., 427488.,
      306261., 312876., 307206., 313848., 308151., 314820., 183678., 187836.,
      184272., 188448., 239472., 245016., 240240., 245808., 175362., 179520.,
      175920., 180096., 176478., 180672., 191994., 196404., 192588., 197016.,
      250224., 256104., 250992., 256896., 183174., 187584., 183732., 188160.,
      184290., 188736.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      37192., 39412., 37336., 39568., 37480., 39724., 37624., 39880., 37768.,
      40036., 37912., 40192., 38056., 40348., 39208., 41596., 39352., 41752.,
      39496., 41908., 39640., 42064., 39784., 42220., 39928., 42376., 40072.,
      42532., 41224., 43780., 41368., 43936., 41512., 44092., 41656., 44248.,
      41800., 44404., 41944., 44560., 42088., 44716., 43240., 45964., 43384.,
      46120., 43528., 46276., 43672., 46432., 43816., 46588., 43960., 46744.,
      44104., 46900., 45256., 48148., 45400., 48304., 45544., 48460., 45688.,
      48616., 45832., 48772., 45976., 48928., 46120., 49084., 47272., 50332.,
      47416., 50488., 47560., 50644., 47704., 50800., 47848., 50956., 47992.,
      51112., 48136., 51268., 49288., 52516., 49432., 52672., 49576., 52828.,
      49720., 52984., 49864., 53140., 50008., 53296., 50152., 53452.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      409314., 413220., 417126., 421032., 410772., 414696., 418620., 422544.,
      535560., 540768., 545976., 551184., 537456., 542688., 547920., 553152.,
      393690., 397596., 401502., 405408., 395076., 399000., 402924., 406848.,
      396462., 400404., 404346., 408288., 429726., 433884., 438042., 442200.,
      431184., 435360., 439536., 443712., 562104., 567648., 573192., 578736.,
      564000., 569568., 575136., 580704., 413094., 417252., 421410., 425568.,
      414480., 418656., 422832., 427008., 415866., 420060., 424254., 428448.,
      577179., 583038., 588897., 594756., 579150., 585036., 590922., 596808.,
      754284., 762096., 769908., 777720., 756840., 764688., 772536., 780384.,
      553743., 559602., 565461., 571320., 555606., 561492., 567378., 573264.,
      557469., 563382., 569295., 575208., 604773., 611010., 617247., 623484.,
      606744., 613008., 619272., 625536., 790068., 798384., 806700., 815016.,
      792624., 800976., 809328., 817680., 579825., 586062., 592299., 598536.,
      581688., 587952., 594216., 600480., 583551., 589842., 596133., 602424.,
      632367., 638982., 645597., 652212., 634338., 640980., 647622., 654264.,
      825852., 834672., 843492., 852312., 828408., 837264., 846120., 854976.,
      605907., 612522., 619137., 625752., 607770., 614412., 621054., 627696.,
      609633., 616302., 622971., 629640., 363198., 367356., 371514., 375672.,
      364368., 368544., 372720., 376896., 473400., 478944., 484488., 490032.,
      474912., 480480., 486048., 491616., 346566., 350724., 354882., 359040.,
      347664., 351840., 356016., 360192., 348762., 352956., 357150., 361344.,
      379578., 383988., 388398., 392808., 380748., 385176., 389604., 394032.,
      494568., 500448., 506328., 512208., 496080., 501984., 507888., 513792.,
      361938., 366348., 370758., 375168., 363036., 367464., 371892., 376320.,
      364134., 368580., 373026., 377472.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      72164., 74384.,  76604.,  78824.,  72440., 74672.,  76904.,  79136.,
      72716., 74960.,  77204.,  79448.,  72992., 75248.,  77504.,  79760.,
      73268., 75536.,  77804.,  80072.,  73544., 75824.,  78104.,  80384.,
      73820., 76112.,  78404.,  80696.,  76028., 78416.,  80804.,  83192.,
      76304., 78704.,  81104.,  83504.,  76580., 78992.,  81404.,  83816.,
      76856., 79280.,  81704.,  84128.,  77132., 79568.,  82004.,  84440.,
      77408., 79856.,  82304.,  84752.,  77684., 80144.,  82604.,  85064.,
      79892., 82448.,  85004.,  87560.,  80168., 82736.,  85304.,  87872.,
      80444., 83024.,  85604.,  88184.,  80720., 83312.,  85904.,  88496.,
      80996., 83600.,  86204.,  88808.,  81272., 83888.,  86504.,  89120.,
      81548., 84176.,  86804.,  89432.,  83756., 86480.,  89204.,  91928.,
      84032., 86768.,  89504.,  92240.,  84308., 87056.,  89804.,  92552.,
      84584., 87344.,  90104.,  92864.,  84860., 87632.,  90404.,  93176.,
      85136., 87920.,  90704.,  93488.,  85412., 88208.,  91004.,  93800.,
      87620., 90512.,  93404.,  96296.,  87896., 90800.,  93704.,  96608.,
      88172., 91088.,  94004.,  96920.,  88448., 91376.,  94304.,  97232.,
      88724., 91664.,  94604.,  97544.,  89000., 91952.,  94904.,  97856.,
      89276., 92240.,  95204.,  98168.,  91484., 94544.,  97604.,  100664.,
      91760., 94832.,  97904.,  100976., 92036., 95120.,  98204.,  101288.,
      92312., 95408.,  98504.,  101600., 92588., 95696.,  98804.,  101912.,
      92864., 95984.,  99104.,  102224., 93140., 96272.,  99404.,  102536.,
      95348., 98576.,  101804., 105032., 95624., 98864.,  102104., 105344.,
      95900., 99152.,  102404., 105656., 96176., 99440.,  102704., 105968.,
      96452., 99728.,  103004., 106280., 96728., 100016., 103304., 106592.,
      97004., 100304., 103604., 106904.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      210138., 210516., 210894., 211272., 275100., 275592., 276084., 276576.,
      202344., 202704., 203064., 203424., 203784., 204144., 220722., 221100.,
      221478., 221856., 288876., 289368., 289860., 290352., 212424., 212784.,
      213144., 213504., 213864., 214224., 296865., 297378., 297891., 298404.,
      388194., 388860., 389526., 390192., 285174., 285660., 286146., 286632.,
      287118., 287604., 311229., 311742., 312255., 312768., 406842., 407508.,
      408174., 408840., 298782., 299268., 299754., 300240., 300726., 301212.,
      325593., 326106., 326619., 327132., 425490., 426156., 426822., 427488.,
      312390., 312876., 313362., 313848., 314334., 314820., 187530., 187836.,
      188142., 188448., 244620., 245016., 245412., 245808., 179232., 179520.,
      179808., 180096., 180384., 180672., 196098., 196404., 196710., 197016.,
      255708., 256104., 256500., 256896., 187296., 187584., 187872., 188160.,
      188448., 188736.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      39334., 39412., 39490., 39568., 39646., 39724., 39802., 39880., 39958.,
      40036., 40114., 40192., 40270., 40348., 41518., 41596., 41674., 41752.,
      41830., 41908., 41986., 42064., 42142., 42220., 42298., 42376., 42454.,
      42532., 43702., 43780., 43858., 43936., 44014., 44092., 44170., 44248.,
      44326., 44404., 44482., 44560., 44638., 44716., 45886., 45964., 46042.,
      46120., 46198., 46276., 46354., 46432., 46510., 46588., 46666., 46744.,
      46822., 46900., 48070., 48148., 48226., 48304., 48382., 48460., 48538.,
      48616., 48694., 48772., 48850., 48928., 49006., 49084., 50254., 50332.,
      50410., 50488., 50566., 50644., 50722., 50800., 50878., 50956., 51034.,
      51112., 51190., 51268., 52438., 52516., 52594., 52672., 52750., 52828.,
      52906., 52984., 53062., 53140., 53218., 53296., 53374., 53452.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      412482., 420276., 413220., 421032., 413958., 421788., 414696., 422544.,
      539808., 550200., 540768., 551184., 541728., 552168., 542688., 553152.,
      396894., 404688., 397596., 405408., 398298., 406128., 399000., 406848.,
      399702., 407568., 400404., 408288., 433146., 441444., 433884., 442200.,
      434622., 442956., 435360., 443712., 566688., 577752., 567648., 578736.,
      568608., 579720., 569568., 580704., 416550., 424848., 417252., 425568.,
      417954., 426288., 418656., 427008., 419358., 427728., 420060., 428448.,
      582039., 593730., 583038., 594756., 584037., 595782., 585036., 596808.,
      760800., 776388., 762096., 777720., 763392., 779052., 764688., 780384.,
      558657., 570348., 559602., 571320., 560547., 572292., 561492., 573264.,
      562437., 574236., 563382., 575208., 610011., 622458., 611010., 623484.,
      612009., 624510., 613008., 625536., 797088., 813684., 798384., 815016.,
      799680., 816348., 800976., 817680., 585117., 597564., 586062., 598536.,
      587007., 599508., 587952., 600480., 588897., 601452., 589842., 602424.,
      637983., 651186., 638982., 652212., 639981., 653238., 640980., 654264.,
      833376., 850980., 834672., 852312., 835968., 853644., 837264., 854976.,
      611577., 624780., 612522., 625752., 613467., 626724., 614412., 627696.,
      615357., 628668., 616302., 629640., 366762., 375060., 367356., 375672.,
      367950., 376284., 368544., 376896., 478176., 489240., 478944., 490032.,
      479712., 490824., 480480., 491616., 350166., 358464., 350724., 359040.,
      351282., 359616., 351840., 360192., 352398., 360768., 352956., 361344.,
      383394., 392196., 383988., 392808., 384582., 393420., 385176., 394032.,
      499680., 511416., 500448., 512208., 501216., 513000., 501984., 513792.,
      365790., 374592., 366348., 375168., 366906., 375744., 367464., 376320.,
      368022., 376896., 368580., 377472.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      74240.,  78668.,  74384.,  78824.,  74528., 78980.,  74672.,  79136.,
      74816.,  79292.,  74960.,  79448.,  75104., 79604.,  75248.,  79760.,
      75392.,  79916.,  75536.,  80072.,  75680., 80228.,  75824.,  80384.,
      75968.,  80540.,  76112.,  80696.,  78272., 83036.,  78416.,  83192.,
      78560.,  83348.,  78704.,  83504.,  78848., 83660.,  78992.,  83816.,
      79136.,  83972.,  79280.,  84128.,  79424., 84284.,  79568.,  84440.,
      79712.,  84596.,  79856.,  84752.,  80000., 84908.,  80144.,  85064.,
      82304.,  87404.,  82448.,  87560.,  82592., 87716.,  82736.,  87872.,
      82880.,  88028.,  83024.,  88184.,  83168., 88340.,  83312.,  88496.,
      83456.,  88652.,  83600.,  88808.,  83744., 88964.,  83888.,  89120.,
      84032.,  89276.,  84176.,  89432.,  86336., 91772.,  86480.,  91928.,
      86624.,  92084.,  86768.,  92240.,  86912., 92396.,  87056.,  92552.,
      87200.,  92708.,  87344.,  92864.,  87488., 93020.,  87632.,  93176.,
      87776.,  93332.,  87920.,  93488.,  88064., 93644.,  88208.,  93800.,
      90368.,  96140.,  90512.,  96296.,  90656., 96452.,  90800.,  96608.,
      90944.,  96764.,  91088.,  96920.,  91232., 97076.,  91376.,  97232.,
      91520.,  97388.,  91664.,  97544.,  91808., 97700.,  91952.,  97856.,
      92096.,  98012.,  92240.,  98168.,  94400., 100508., 94544.,  100664.,
      94688.,  100820., 94832.,  100976., 94976., 101132., 95120.,  101288.,
      95264.,  101444., 95408.,  101600., 95552., 101756., 95696.,  101912.,
      95840.,  102068., 95984.,  102224., 96128., 102380., 96272.,  102536.,
      98432.,  104876., 98576.,  105032., 98720., 105188., 98864.,  105344.,
      99008.,  105500., 99152.,  105656., 99296., 105812., 99440.,  105968.,
      99584.,  106124., 99728.,  106280., 99872., 106436., 100016., 106592.,
      100160., 106748., 100304., 106904.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      817170.,  824964.,  832758.,  840552.,  818628.,  826440.,  834252.,
      842064.,  820086.,  827916.,  835746.,  843576.,  821544.,  829392.,
      837240.,  845088.,  1069224., 1079616., 1090008., 1100400., 1071120.,
      1081536., 1091952., 1102368., 1073016., 1083456., 1093896., 1104336.,
      1074912., 1085376., 1095840., 1106304., 785994.,  793788.,  801582.,
      809376.,  787380.,  795192.,  803004.,  810816.,  788766.,  796596.,
      804426.,  812256.,  790152.,  798000.,  805848.,  813696.,  791538.,
      799404.,  807270.,  815136.,  792924.,  800808.,  808692.,  816576.,
      857994.,  866292.,  874590.,  882888.,  859452.,  867768.,  876084.,
      884400.,  860910.,  869244.,  877578.,  885912.,  862368.,  870720.,
      879072.,  887424.,  1122312., 1133376., 1144440., 1155504., 1124208.,
      1135296., 1146384., 1157472., 1126104., 1137216., 1148328., 1159440.,
      1128000., 1139136., 1150272., 1161408., 824802.,  833100.,  841398.,
      849696.,  826188.,  834504.,  842820.,  851136.,  827574.,  835908.,
      844242.,  852576.,  828960.,  837312.,  845664.,  854016.,  830346.,
      838716.,  847086.,  855456.,  831732.,  840120.,  848508.,  856896.,
      1152387., 1164078., 1175769., 1187460., 1154358., 1166076., 1177794.,
      1189512., 1156329., 1168074., 1179819., 1191564., 1158300., 1170072.,
      1181844., 1193616., 1506012., 1521600., 1537188., 1552776., 1508568.,
      1524192., 1539816., 1555440., 1511124., 1526784., 1542444., 1558104.,
      1513680., 1529376., 1545072., 1560768., 1105623., 1117314., 1129005.,
      1140696., 1107486., 1119204., 1130922., 1142640., 1109349., 1121094.,
      1132839., 1144584., 1111212., 1122984., 1134756., 1146528., 1113075.,
      1124874., 1136673., 1148472., 1114938., 1126764., 1138590., 1150416.,
      1207575., 1220022., 1232469., 1244916., 1209546., 1222020., 1234494.,
      1246968., 1211517., 1224018., 1236519., 1249020., 1213488., 1226016.,
      1238544., 1251072., 1577580., 1594176., 1610772., 1627368., 1580136.,
      1596768., 1613400., 1630032., 1582692., 1599360., 1616028., 1632696.,
      1585248., 1601952., 1618656., 1635360., 1157787., 1170234., 1182681.,
      1195128., 1159650., 1172124., 1184598., 1197072., 1161513., 1174014.,
      1186515., 1199016., 1163376., 1175904., 1188432., 1200960., 1165239.,
      1177794., 1190349., 1202904., 1167102., 1179684., 1192266., 1204848.,
      1262763., 1275966., 1289169., 1302372., 1264734., 1277964., 1291194.,
      1304424., 1266705., 1279962., 1293219., 1306476., 1268676., 1281960.,
      1295244., 1308528., 1649148., 1666752., 1684356., 1701960., 1651704.,
      1669344., 1686984., 1704624., 1654260., 1671936., 1689612., 1707288.,
      1656816., 1674528., 1692240., 1709952., 1209951., 1223154., 1236357.,
      1249560., 1211814., 1225044., 1238274., 1251504., 1213677., 1226934.,
      1240191., 1253448., 1215540., 1228824., 1242108., 1255392., 1217403.,
      1230714., 1244025., 1257336., 1219266., 1232604., 1245942., 1259280.,
      725226.,  733524.,  741822.,  750120.,  726396.,  734712.,  743028.,
      751344.,  727566.,  735900.,  744234.,  752568.,  728736.,  737088.,
      745440.,  753792.,  945288.,  956352.,  967416.,  978480.,  946800.,
      957888.,  968976.,  980064.,  948312.,  959424.,  970536.,  981648.,
      949824.,  960960.,  972096.,  983232.,  692034.,  700332.,  708630.,
      716928.,  693132.,  701448.,  709764.,  718080.,  694230.,  702564.,
      710898.,  719232.,  695328.,  703680.,  712032.,  720384.,  696426.,
      704796.,  713166.,  721536.,  697524.,  705912.,  714300.,  722688.,
      757986.,  766788.,  775590.,  784392.,  759156.,  767976.,  776796.,
      785616.,  760326.,  769164.,  778002.,  786840.,  761496.,  770352.,
      779208.,  788064.,  987624.,  999360.,  1011096., 1022832., 989136.,
      1000896., 1012656., 1024416., 990648.,  1002432., 1014216., 1026000.,
      992160.,  1003968., 1015776., 1027584., 722778.,  731580.,  740382.,
      749184.,  723876.,  732696.,  741516.,  750336.,  724974.,  733812.,
      742650.,  751488.,  726072.,  734928.,  743784.,  752640.,  727170.,
      736044.,  744918.,  753792.,  728268.,  737160.,  746052.,  754944.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      144052., 148480., 152908., 157336., 144328., 148768., 153208., 157648.,
      144604., 149056., 153508., 157960., 144880., 149344., 153808., 158272.,
      145156., 149632., 154108., 158584., 145432., 149920., 154408., 158896.,
      145708., 150208., 154708., 159208., 145984., 150496., 155008., 159520.,
      146260., 150784., 155308., 159832., 146536., 151072., 155608., 160144.,
      146812., 151360., 155908., 160456., 147088., 151648., 156208., 160768.,
      147364., 151936., 156508., 161080., 147640., 152224., 156808., 161392.,
      151780., 156544., 161308., 166072., 152056., 156832., 161608., 166384.,
      152332., 157120., 161908., 166696., 152608., 157408., 162208., 167008.,
      152884., 157696., 162508., 167320., 153160., 157984., 162808., 167632.,
      153436., 158272., 163108., 167944., 153712., 158560., 163408., 168256.,
      153988., 158848., 163708., 168568., 154264., 159136., 164008., 168880.,
      154540., 159424., 164308., 169192., 154816., 159712., 164608., 169504.,
      155092., 160000., 164908., 169816., 155368., 160288., 165208., 170128.,
      159508., 164608., 169708., 174808., 159784., 164896., 170008., 175120.,
      160060., 165184., 170308., 175432., 160336., 165472., 170608., 175744.,
      160612., 165760., 170908., 176056., 160888., 166048., 171208., 176368.,
      161164., 166336., 171508., 176680., 161440., 166624., 171808., 176992.,
      161716., 166912., 172108., 177304., 161992., 167200., 172408., 177616.,
      162268., 167488., 172708., 177928., 162544., 167776., 173008., 178240.,
      162820., 168064., 173308., 178552., 163096., 168352., 173608., 178864.,
      167236., 172672., 178108., 183544., 167512., 172960., 178408., 183856.,
      167788., 173248., 178708., 184168., 168064., 173536., 179008., 184480.,
      168340., 173824., 179308., 184792., 168616., 174112., 179608., 185104.,
      168892., 174400., 179908., 185416., 169168., 174688., 180208., 185728.,
      169444., 174976., 180508., 186040., 169720., 175264., 180808., 186352.,
      169996., 175552., 181108., 186664., 170272., 175840., 181408., 186976.,
      170548., 176128., 181708., 187288., 170824., 176416., 182008., 187600.,
      174964., 180736., 186508., 192280., 175240., 181024., 186808., 192592.,
      175516., 181312., 187108., 192904., 175792., 181600., 187408., 193216.,
      176068., 181888., 187708., 193528., 176344., 182176., 188008., 193840.,
      176620., 182464., 188308., 194152., 176896., 182752., 188608., 194464.,
      177172., 183040., 188908., 194776., 177448., 183328., 189208., 195088.,
      177724., 183616., 189508., 195400., 178000., 183904., 189808., 195712.,
      178276., 184192., 190108., 196024., 178552., 184480., 190408., 196336.,
      182692., 188800., 194908., 201016., 182968., 189088., 195208., 201328.,
      183244., 189376., 195508., 201640., 183520., 189664., 195808., 201952.,
      183796., 189952., 196108., 202264., 184072., 190240., 196408., 202576.,
      184348., 190528., 196708., 202888., 184624., 190816., 197008., 203200.,
      184900., 191104., 197308., 203512., 185176., 191392., 197608., 203824.,
      185452., 191680., 197908., 204136., 185728., 191968., 198208., 204448.,
      186004., 192256., 198508., 204760., 186280., 192544., 198808., 205072.,
      190420., 196864., 203308., 209752., 190696., 197152., 203608., 210064.,
      190972., 197440., 203908., 210376., 191248., 197728., 204208., 210688.,
      191524., 198016., 204508., 211000., 191800., 198304., 204808., 211312.,
      192076., 198592., 205108., 211624., 192352., 198880., 205408., 211936.,
      192628., 199168., 205708., 212248., 192904., 199456., 206008., 212560.,
      193180., 199744., 206308., 212872., 193456., 200032., 206608., 213184.,
      193732., 200320., 206908., 213496., 194008., 200608., 207208., 213808.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      419898., 420276., 420654., 421032., 421410., 421788., 422166., 422544.,
      549708., 550200., 550692., 551184., 551676., 552168., 552660., 553152.,
      404328., 404688., 405048., 405408., 405768., 406128., 406488., 406848.,
      407208., 407568., 407928., 408288., 441066., 441444., 441822., 442200.,
      442578., 442956., 443334., 443712., 577260., 577752., 578244., 578736.,
      579228., 579720., 580212., 580704., 424488., 424848., 425208., 425568.,
      425928., 426288., 426648., 427008., 427368., 427728., 428088., 428448.,
      593217., 593730., 594243., 594756., 595269., 595782., 596295., 596808.,
      775722., 776388., 777054., 777720., 778386., 779052., 779718., 780384.,
      569862., 570348., 570834., 571320., 571806., 572292., 572778., 573264.,
      573750., 574236., 574722., 575208., 621945., 622458., 622971., 623484.,
      623997., 624510., 625023., 625536., 813018., 813684., 814350., 815016.,
      815682., 816348., 817014., 817680., 597078., 597564., 598050., 598536.,
      599022., 599508., 599994., 600480., 600966., 601452., 601938., 602424.,
      650673., 651186., 651699., 652212., 652725., 653238., 653751., 654264.,
      850314., 850980., 851646., 852312., 852978., 853644., 854310., 854976.,
      624294., 624780., 625266., 625752., 626238., 626724., 627210., 627696.,
      628182., 628668., 629154., 629640., 374754., 375060., 375366., 375672.,
      375978., 376284., 376590., 376896., 488844., 489240., 489636., 490032.,
      490428., 490824., 491220., 491616., 358176., 358464., 358752., 359040.,
      359328., 359616., 359904., 360192., 360480., 360768., 361056., 361344.,
      391890., 392196., 392502., 392808., 393114., 393420., 393726., 394032.,
      511020., 511416., 511812., 512208., 512604., 513000., 513396., 513792.,
      374304., 374592., 374880., 375168., 375456., 375744., 376032., 376320.,
      376608., 376896., 377184., 377472.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      78590.,  78668.,  78746.,  78824.,  78902.,  78980.,  79058.,  79136.,
      79214.,  79292.,  79370.,  79448.,  79526.,  79604.,  79682.,  79760.,
      79838.,  79916.,  79994.,  80072.,  80150.,  80228.,  80306.,  80384.,
      80462.,  80540.,  80618.,  80696.,  82958.,  83036.,  83114.,  83192.,
      83270.,  83348.,  83426.,  83504.,  83582.,  83660.,  83738.,  83816.,
      83894.,  83972.,  84050.,  84128.,  84206.,  84284.,  84362.,  84440.,
      84518.,  84596.,  84674.,  84752.,  84830.,  84908.,  84986.,  85064.,
      87326.,  87404.,  87482.,  87560.,  87638.,  87716.,  87794.,  87872.,
      87950.,  88028.,  88106.,  88184.,  88262.,  88340.,  88418.,  88496.,
      88574.,  88652.,  88730.,  88808.,  88886.,  88964.,  89042.,  89120.,
      89198.,  89276.,  89354.,  89432.,  91694.,  91772.,  91850.,  91928.,
      92006.,  92084.,  92162.,  92240.,  92318.,  92396.,  92474.,  92552.,
      92630.,  92708.,  92786.,  92864.,  92942.,  93020.,  93098.,  93176.,
      93254.,  93332.,  93410.,  93488.,  93566.,  93644.,  93722.,  93800.,
      96062.,  96140.,  96218.,  96296.,  96374.,  96452.,  96530.,  96608.,
      96686.,  96764.,  96842.,  96920.,  96998.,  97076.,  97154.,  97232.,
      97310.,  97388.,  97466.,  97544.,  97622.,  97700.,  97778.,  97856.,
      97934.,  98012.,  98090.,  98168.,  100430., 100508., 100586., 100664.,
      100742., 100820., 100898., 100976., 101054., 101132., 101210., 101288.,
      101366., 101444., 101522., 101600., 101678., 101756., 101834., 101912.,
      101990., 102068., 102146., 102224., 102302., 102380., 102458., 102536.,
      104798., 104876., 104954., 105032., 105110., 105188., 105266., 105344.,
      105422., 105500., 105578., 105656., 105734., 105812., 105890., 105968.,
      106046., 106124., 106202., 106280., 106358., 106436., 106514., 106592.,
      106670., 106748., 106826., 106904.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      824226.,  839796.,  824964.,  840552.,  825702.,  841308.,  826440.,
      842064.,  827178.,  842820.,  827916.,  843576.,  828654.,  844332.,
      829392.,  845088.,  1078656., 1099416., 1079616., 1100400., 1080576.,
      1101384., 1081536., 1102368., 1082496., 1103352., 1083456., 1104336.,
      1084416., 1105320., 1085376., 1106304., 793086.,  808656.,  793788.,
      809376.,  794490.,  810096.,  795192.,  810816.,  795894.,  811536.,
      796596.,  812256.,  797298.,  812976.,  798000.,  813696.,  798702.,
      814416.,  799404.,  815136.,  800106.,  815856.,  800808.,  816576.,
      865554.,  882132.,  866292.,  882888.,  867030.,  883644.,  867768.,
      884400.,  868506.,  885156.,  869244.,  885912.,  869982.,  886668.,
      870720.,  887424.,  1132416., 1154520., 1133376., 1155504., 1134336.,
      1156488., 1135296., 1157472., 1136256., 1158456., 1137216., 1159440.,
      1138176., 1160424., 1139136., 1161408., 832398.,  848976.,  833100.,
      849696.,  833802.,  850416.,  834504.,  851136.,  835206.,  851856.,
      835908.,  852576.,  836610.,  853296.,  837312.,  854016.,  838014.,
      854736.,  838716.,  855456.,  839418.,  856176.,  840120.,  856896.,
      1163079., 1186434., 1164078., 1187460., 1165077., 1188486., 1166076.,
      1189512., 1167075., 1190538., 1168074., 1191564., 1169073., 1192590.,
      1170072., 1193616., 1520304., 1551444., 1521600., 1552776., 1522896.,
      1554108., 1524192., 1555440., 1525488., 1556772., 1526784., 1558104.,
      1528080., 1559436., 1529376., 1560768., 1116369., 1139724., 1117314.,
      1140696., 1118259., 1141668., 1119204., 1142640., 1120149., 1143612.,
      1121094., 1144584., 1122039., 1145556., 1122984., 1146528., 1123929.,
      1147500., 1124874., 1148472., 1125819., 1149444., 1126764., 1150416.,
      1219023., 1243890., 1220022., 1244916., 1221021., 1245942., 1222020.,
      1246968., 1223019., 1247994., 1224018., 1249020., 1225017., 1250046.,
      1226016., 1251072., 1592880., 1626036., 1594176., 1627368., 1595472.,
      1628700., 1596768., 1630032., 1598064., 1631364., 1599360., 1632696.,
      1600656., 1634028., 1601952., 1635360., 1169289., 1194156., 1170234.,
      1195128., 1171179., 1196100., 1172124., 1197072., 1173069., 1198044.,
      1174014., 1199016., 1174959., 1199988., 1175904., 1200960., 1176849.,
      1201932., 1177794., 1202904., 1178739., 1203876., 1179684., 1204848.,
      1274967., 1301346., 1275966., 1302372., 1276965., 1303398., 1277964.,
      1304424., 1278963., 1305450., 1279962., 1306476., 1280961., 1307502.,
      1281960., 1308528., 1665456., 1700628., 1666752., 1701960., 1668048.,
      1703292., 1669344., 1704624., 1670640., 1705956., 1671936., 1707288.,
      1673232., 1708620., 1674528., 1709952., 1222209., 1248588., 1223154.,
      1249560., 1224099., 1250532., 1225044., 1251504., 1225989., 1252476.,
      1226934., 1253448., 1227879., 1254420., 1228824., 1255392., 1229769.,
      1256364., 1230714., 1257336., 1231659., 1258308., 1232604., 1259280.,
      732930.,  749508.,  733524.,  750120.,  734118.,  750732.,  734712.,
      751344.,  735306.,  751956.,  735900.,  752568.,  736494.,  753180.,
      737088.,  753792.,  955584.,  977688.,  956352.,  978480.,  957120.,
      979272.,  957888.,  980064.,  958656.,  980856.,  959424.,  981648.,
      960192.,  982440.,  960960.,  983232.,  699774.,  716352.,  700332.,
      716928.,  700890.,  717504.,  701448.,  718080.,  702006.,  718656.,
      702564.,  719232.,  703122.,  719808.,  703680.,  720384.,  704238.,
      720960.,  704796.,  721536.,  705354.,  722112.,  705912.,  722688.,
      766194.,  783780.,  766788.,  784392.,  767382.,  785004.,  767976.,
      785616.,  768570.,  786228.,  769164.,  786840.,  769758.,  787452.,
      770352.,  788064.,  998592.,  1022040., 999360.,  1022832., 1000128.,
      1023624., 1000896., 1024416., 1001664., 1025208., 1002432., 1026000.,
      1003200., 1026792., 1003968., 1027584., 731022.,  748608.,  731580.,
      749184.,  732138.,  749760.,  732696.,  750336.,  733254.,  750912.,
      733812.,  751488.,  734370.,  752064.,  734928.,  752640.,  735486.,
      753216.,  736044.,  753792.,  736602.,  754368.,  737160.,  754944.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      148336., 157180., 148480., 157336., 148624., 157492., 148768., 157648.,
      148912., 157804., 149056., 157960., 149200., 158116., 149344., 158272.,
      149488., 158428., 149632., 158584., 149776., 158740., 149920., 158896.,
      150064., 159052., 150208., 159208., 150352., 159364., 150496., 159520.,
      150640., 159676., 150784., 159832., 150928., 159988., 151072., 160144.,
      151216., 160300., 151360., 160456., 151504., 160612., 151648., 160768.,
      151792., 160924., 151936., 161080., 152080., 161236., 152224., 161392.,
      156400., 165916., 156544., 166072., 156688., 166228., 156832., 166384.,
      156976., 166540., 157120., 166696., 157264., 166852., 157408., 167008.,
      157552., 167164., 157696., 167320., 157840., 167476., 157984., 167632.,
      158128., 167788., 158272., 167944., 158416., 168100., 158560., 168256.,
      158704., 168412., 158848., 168568., 158992., 168724., 159136., 168880.,
      159280., 169036., 159424., 169192., 159568., 169348., 159712., 169504.,
      159856., 169660., 160000., 169816., 160144., 169972., 160288., 170128.,
      164464., 174652., 164608., 174808., 164752., 174964., 164896., 175120.,
      165040., 175276., 165184., 175432., 165328., 175588., 165472., 175744.,
      165616., 175900., 165760., 176056., 165904., 176212., 166048., 176368.,
      166192., 176524., 166336., 176680., 166480., 176836., 166624., 176992.,
      166768., 177148., 166912., 177304., 167056., 177460., 167200., 177616.,
      167344., 177772., 167488., 177928., 167632., 178084., 167776., 178240.,
      167920., 178396., 168064., 178552., 168208., 178708., 168352., 178864.,
      172528., 183388., 172672., 183544., 172816., 183700., 172960., 183856.,
      173104., 184012., 173248., 184168., 173392., 184324., 173536., 184480.,
      173680., 184636., 173824., 184792., 173968., 184948., 174112., 185104.,
      174256., 185260., 174400., 185416., 174544., 185572., 174688., 185728.,
      174832., 185884., 174976., 186040., 175120., 186196., 175264., 186352.,
      175408., 186508., 175552., 186664., 175696., 186820., 175840., 186976.,
      175984., 187132., 176128., 187288., 176272., 187444., 176416., 187600.,
      180592., 192124., 180736., 192280., 180880., 192436., 181024., 192592.,
      181168., 192748., 181312., 192904., 181456., 193060., 181600., 193216.,
      181744., 193372., 181888., 193528., 182032., 193684., 182176., 193840.,
      182320., 193996., 182464., 194152., 182608., 194308., 182752., 194464.,
      182896., 194620., 183040., 194776., 183184., 194932., 183328., 195088.,
      183472., 195244., 183616., 195400., 183760., 195556., 183904., 195712.,
      184048., 195868., 184192., 196024., 184336., 196180., 184480., 196336.,
      188656., 200860., 188800., 201016., 188944., 201172., 189088., 201328.,
      189232., 201484., 189376., 201640., 189520., 201796., 189664., 201952.,
      189808., 202108., 189952., 202264., 190096., 202420., 190240., 202576.,
      190384., 202732., 190528., 202888., 190672., 203044., 190816., 203200.,
      190960., 203356., 191104., 203512., 191248., 203668., 191392., 203824.,
      191536., 203980., 191680., 204136., 191824., 204292., 191968., 204448.,
      192112., 204604., 192256., 204760., 192400., 204916., 192544., 205072.,
      196720., 209596., 196864., 209752., 197008., 209908., 197152., 210064.,
      197296., 210220., 197440., 210376., 197584., 210532., 197728., 210688.,
      197872., 210844., 198016., 211000., 198160., 211156., 198304., 211312.,
      198448., 211468., 198592., 211624., 198736., 211780., 198880., 211936.,
      199024., 212092., 199168., 212248., 199312., 212404., 199456., 212560.,
      199600., 212716., 199744., 212872., 199888., 213028., 200032., 213184.,
      200176., 213340., 200320., 213496., 200464., 213652., 200608., 213808.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x11x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1632882., 1648452., 1664022., 1679592., 1634340., 1649928., 1665516.,
      1681104., 1635798., 1651404., 1667010., 1682616., 1637256., 1652880.,
      1668504., 1684128., 1638714., 1654356., 1669998., 1685640., 1640172.,
      1655832., 1671492., 1687152., 1641630., 1657308., 1672986., 1688664.,
      1643088., 1658784., 1674480., 1690176., 2136552., 2157312., 2178072.,
      2198832., 2138448., 2159232., 2180016., 2200800., 2140344., 2161152.,
      2181960., 2202768., 2142240., 2163072., 2183904., 2204736., 2144136.,
      2164992., 2185848., 2206704., 2146032., 2166912., 2187792., 2208672.,
      2147928., 2168832., 2189736., 2210640., 2149824., 2170752., 2191680.,
      2212608., 1570602., 1586172., 1601742., 1617312., 1571988., 1587576.,
      1603164., 1618752., 1573374., 1588980., 1604586., 1620192., 1574760.,
      1590384., 1606008., 1621632., 1576146., 1591788., 1607430., 1623072.,
      1577532., 1593192., 1608852., 1624512., 1578918., 1594596., 1610274.,
      1625952., 1580304., 1596000., 1611696., 1627392., 1581690., 1597404.,
      1613118., 1628832., 1583076., 1598808., 1614540., 1630272., 1584462.,
      1600212., 1615962., 1631712., 1585848., 1601616., 1617384., 1633152.,
      1714530., 1731108., 1747686., 1764264., 1715988., 1732584., 1749180.,
      1765776., 1717446., 1734060., 1750674., 1767288., 1718904., 1735536.,
      1752168., 1768800., 1720362., 1737012., 1753662., 1770312., 1721820.,
      1738488., 1755156., 1771824., 1723278., 1739964., 1756650., 1773336.,
      1724736., 1741440., 1758144., 1774848., 2242728., 2264832., 2286936.,
      2309040., 2244624., 2266752., 2288880., 2311008., 2246520., 2268672.,
      2290824., 2312976., 2248416., 2270592., 2292768., 2314944., 2250312.,
      2272512., 2294712., 2316912., 2252208., 2274432., 2296656., 2318880.,
      2254104., 2276352., 2298600., 2320848., 2256000., 2278272., 2300544.,
      2322816., 1648218., 1664796., 1681374., 1697952., 1649604., 1666200.,
      1682796., 1699392., 1650990., 1667604., 1684218., 1700832., 1652376.,
      1669008., 1685640., 1702272., 1653762., 1670412., 1687062., 1703712.,
      1655148., 1671816., 1688484., 1705152., 1656534., 1673220., 1689906.,
      1706592., 1657920., 1674624., 1691328., 1708032., 1659306., 1676028.,
      1692750., 1709472., 1660692., 1677432., 1694172., 1710912., 1662078.,
      1678836., 1695594., 1712352., 1663464., 1680240., 1697016., 1713792.,
      2302803., 2326158., 2349513., 2372868., 2304774., 2328156., 2351538.,
      2374920., 2306745., 2330154., 2353563., 2376972., 2308716., 2332152.,
      2355588., 2379024., 2310687., 2334150., 2357613., 2381076., 2312658.,
      2336148., 2359638., 2383128., 2314629., 2338146., 2361663., 2385180.,
      2316600., 2340144., 2363688., 2387232., 3009468., 3040608., 3071748.,
      3102888., 3012024., 3043200., 3074376., 3105552., 3014580., 3045792.,
      3077004., 3108216., 3017136., 3048384., 3079632., 3110880., 3019692.,
      3050976., 3082260., 3113544., 3022248., 3053568., 3084888., 3116208.,
      3024804., 3056160., 3087516., 3118872., 3027360., 3058752., 3090144.,
      3121536., 2209383., 2232738., 2256093., 2279448., 2211246., 2234628.,
      2258010., 2281392., 2213109., 2236518., 2259927., 2283336., 2214972.,
      2238408., 2261844., 2285280., 2216835., 2240298., 2263761., 2287224.,
      2218698., 2242188., 2265678., 2289168., 2220561., 2244078., 2267595.,
      2291112., 2222424., 2245968., 2269512., 2293056., 2224287., 2247858.,
      2271429., 2295000., 2226150., 2249748., 2273346., 2296944., 2228013.,
      2251638., 2275263., 2298888., 2229876., 2253528., 2277180., 2300832.,
      2413179., 2438046., 2462913., 2487780., 2415150., 2440044., 2464938.,
      2489832., 2417121., 2442042., 2466963., 2491884., 2419092., 2444040.,
      2468988., 2493936., 2421063., 2446038., 2471013., 2495988., 2423034.,
      2448036., 2473038., 2498040., 2425005., 2450034., 2475063., 2500092.,
      2426976., 2452032., 2477088., 2502144., 3152604., 3185760., 3218916.,
      3252072., 3155160., 3188352., 3221544., 3254736., 3157716., 3190944.,
      3224172., 3257400., 3160272., 3193536., 3226800., 3260064., 3162828.,
      3196128., 3229428., 3262728., 3165384., 3198720., 3232056., 3265392.,
      3167940., 3201312., 3234684., 3268056., 3170496., 3203904., 3237312.,
      3270720., 2313711., 2338578., 2363445., 2388312., 2315574., 2340468.,
      2365362., 2390256., 2317437., 2342358., 2367279., 2392200., 2319300.,
      2344248., 2369196., 2394144., 2321163., 2346138., 2371113., 2396088.,
      2323026., 2348028., 2373030., 2398032., 2324889., 2349918., 2374947.,
      2399976., 2326752., 2351808., 2376864., 2401920., 2328615., 2353698.,
      2378781., 2403864., 2330478., 2355588., 2380698., 2405808., 2332341.,
      2357478., 2382615., 2407752., 2334204., 2359368., 2384532., 2409696.,
      2523555., 2549934., 2576313., 2602692., 2525526., 2551932., 2578338.,
      2604744., 2527497., 2553930., 2580363., 2606796., 2529468., 2555928.,
      2582388., 2608848., 2531439., 2557926., 2584413., 2610900., 2533410.,
      2559924., 2586438., 2612952., 2535381., 2561922., 2588463., 2615004.,
      2537352., 2563920., 2590488., 2617056., 3295740., 3330912., 3366084.,
      3401256., 3298296., 3333504., 3368712., 3403920., 3300852., 3336096.,
      3371340., 3406584., 3303408., 3338688., 3373968., 3409248., 3305964.,
      3341280., 3376596., 3411912., 3308520., 3343872., 3379224., 3414576.,
      3311076., 3346464., 3381852., 3417240., 3313632., 3349056., 3384480.,
      3419904., 2418039., 2444418., 2470797., 2497176., 2419902., 2446308.,
      2472714., 2499120., 2421765., 2448198., 2474631., 2501064., 2423628.,
      2450088., 2476548., 2503008., 2425491., 2451978., 2478465., 2504952.,
      2427354., 2453868., 2480382., 2506896., 2429217., 2455758., 2482299.,
      2508840., 2431080., 2457648., 2484216., 2510784., 2432943., 2459538.,
      2486133., 2512728., 2434806., 2461428., 2488050., 2514672., 2436669.,
      2463318., 2489967., 2516616., 2438532., 2465208., 2491884., 2518560.,
      1449282., 1465860., 1482438., 1499016., 1450452., 1467048., 1483644.,
      1500240., 1451622., 1468236., 1484850., 1501464., 1452792., 1469424.,
      1486056., 1502688., 1453962., 1470612., 1487262., 1503912., 1455132.,
      1471800., 1488468., 1505136., 1456302., 1472988., 1489674., 1506360.,
      1457472., 1474176., 1490880., 1507584., 1889064., 1911168., 1933272.,
      1955376., 1890576., 1912704., 1934832., 1956960., 1892088., 1914240.,
      1936392., 1958544., 1893600., 1915776., 1937952., 1960128., 1895112.,
      1917312., 1939512., 1961712., 1896624., 1918848., 1941072., 1963296.,
      1898136., 1920384., 1942632., 1964880., 1899648., 1921920., 1944192.,
      1966464., 1382970., 1399548., 1416126., 1432704., 1384068., 1400664.,
      1417260., 1433856., 1385166., 1401780., 1418394., 1435008., 1386264.,
      1402896., 1419528., 1436160., 1387362., 1404012., 1420662., 1437312.,
      1388460., 1405128., 1421796., 1438464., 1389558., 1406244., 1422930.,
      1439616., 1390656., 1407360., 1424064., 1440768., 1391754., 1408476.,
      1425198., 1441920., 1392852., 1409592., 1426332., 1443072., 1393950.,
      1410708., 1427466., 1444224., 1395048., 1411824., 1428600., 1445376.,
      1514802., 1532388., 1549974., 1567560., 1515972., 1533576., 1551180.,
      1568784., 1517142., 1534764., 1552386., 1570008., 1518312., 1535952.,
      1553592., 1571232., 1519482., 1537140., 1554798., 1572456., 1520652.,
      1538328., 1556004., 1573680., 1521822., 1539516., 1557210., 1574904.,
      1522992., 1540704., 1558416., 1576128., 1973736., 1997184., 2020632.,
      2044080., 1975248., 1998720., 2022192., 2045664., 1976760., 2000256.,
      2023752., 2047248., 1978272., 2001792., 2025312., 2048832., 1979784.,
      2003328., 2026872., 2050416., 1981296., 2004864., 2028432., 2052000.,
      1982808., 2006400., 2029992., 2053584., 1984320., 2007936., 2031552.,
      2055168., 1444458., 1462044., 1479630., 1497216., 1445556., 1463160.,
      1480764., 1498368., 1446654., 1464276., 1481898., 1499520., 1447752.,
      1465392., 1483032., 1500672., 1448850., 1466508., 1484166., 1501824.,
      1449948., 1467624., 1485300., 1502976., 1451046., 1468740., 1486434.,
      1504128., 1452144., 1469856., 1487568., 1505280., 1453242., 1470972.,
      1488702., 1506432., 1454340., 1472088., 1489836., 1507584., 1455438.,
      1473204., 1490970., 1508736., 1456536., 1474320., 1492104., 1509888.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x11x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      287828., 296672., 305516., 314360., 288104., 296960., 305816., 314672.,
      288380., 297248., 306116., 314984., 288656., 297536., 306416., 315296.,
      288932., 297824., 306716., 315608., 289208., 298112., 307016., 315920.,
      289484., 298400., 307316., 316232., 289760., 298688., 307616., 316544.,
      290036., 298976., 307916., 316856., 290312., 299264., 308216., 317168.,
      290588., 299552., 308516., 317480., 290864., 299840., 308816., 317792.,
      291140., 300128., 309116., 318104., 291416., 300416., 309416., 318416.,
      291692., 300704., 309716., 318728., 291968., 300992., 310016., 319040.,
      292244., 301280., 310316., 319352., 292520., 301568., 310616., 319664.,
      292796., 301856., 310916., 319976., 293072., 302144., 311216., 320288.,
      293348., 302432., 311516., 320600., 293624., 302720., 311816., 320912.,
      293900., 303008., 312116., 321224., 294176., 303296., 312416., 321536.,
      294452., 303584., 312716., 321848., 294728., 303872., 313016., 322160.,
      295004., 304160., 313316., 322472., 295280., 304448., 313616., 322784.,
      303284., 312800., 322316., 331832., 303560., 313088., 322616., 332144.,
      303836., 313376., 322916., 332456., 304112., 313664., 323216., 332768.,
      304388., 313952., 323516., 333080., 304664., 314240., 323816., 333392.,
      304940., 314528., 324116., 333704., 305216., 314816., 324416., 334016.,
      305492., 315104., 324716., 334328., 305768., 315392., 325016., 334640.,
      306044., 315680., 325316., 334952., 306320., 315968., 325616., 335264.,
      306596., 316256., 325916., 335576., 306872., 316544., 326216., 335888.,
      307148., 316832., 326516., 336200., 307424., 317120., 326816., 336512.,
      307700., 317408., 327116., 336824., 307976., 317696., 327416., 337136.,
      308252., 317984., 327716., 337448., 308528., 318272., 328016., 337760.,
      308804., 318560., 328316., 338072., 309080., 318848., 328616., 338384.,
      309356., 319136., 328916., 338696., 309632., 319424., 329216., 339008.,
      309908., 319712., 329516., 339320., 310184., 320000., 329816., 339632.,
      310460., 320288., 330116., 339944., 310736., 320576., 330416., 340256.,
      318740., 328928., 339116., 349304., 319016., 329216., 339416., 349616.,
      319292., 329504., 339716., 349928., 319568., 329792., 340016., 350240.,
      319844., 330080., 340316., 350552., 320120., 330368., 340616., 350864.,
      320396., 330656., 340916., 351176., 320672., 330944., 341216., 351488.,
      320948., 331232., 341516., 351800., 321224., 331520., 341816., 352112.,
      321500., 331808., 342116., 352424., 321776., 332096., 342416., 352736.,
      322052., 332384., 342716., 353048., 322328., 332672., 343016., 353360.,
      322604., 332960., 343316., 353672., 322880., 333248., 343616., 353984.,
      323156., 333536., 343916., 354296., 323432., 333824., 344216., 354608.,
      323708., 334112., 344516., 354920., 323984., 334400., 344816., 355232.,
      324260., 334688., 345116., 355544., 324536., 334976., 345416., 355856.,
      324812., 335264., 345716., 356168., 325088., 335552., 346016., 356480.,
      325364., 335840., 346316., 356792., 325640., 336128., 346616., 357104.,
      325916., 336416., 346916., 357416., 326192., 336704., 347216., 357728.,
      334196., 345056., 355916., 366776., 334472., 345344., 356216., 367088.,
      334748., 345632., 356516., 367400., 335024., 345920., 356816., 367712.,
      335300., 346208., 357116., 368024., 335576., 346496., 357416., 368336.,
      335852., 346784., 357716., 368648., 336128., 347072., 358016., 368960.,
      336404., 347360., 358316., 369272., 336680., 347648., 358616., 369584.,
      336956., 347936., 358916., 369896., 337232., 348224., 359216., 370208.,
      337508., 348512., 359516., 370520., 337784., 348800., 359816., 370832.,
      338060., 349088., 360116., 371144., 338336., 349376., 360416., 371456.,
      338612., 349664., 360716., 371768., 338888., 349952., 361016., 372080.,
      339164., 350240., 361316., 372392., 339440., 350528., 361616., 372704.,
      339716., 350816., 361916., 373016., 339992., 351104., 362216., 373328.,
      340268., 351392., 362516., 373640., 340544., 351680., 362816., 373952.,
      340820., 351968., 363116., 374264., 341096., 352256., 363416., 374576.,
      341372., 352544., 363716., 374888., 341648., 352832., 364016., 375200.,
      349652., 361184., 372716., 384248., 349928., 361472., 373016., 384560.,
      350204., 361760., 373316., 384872., 350480., 362048., 373616., 385184.,
      350756., 362336., 373916., 385496., 351032., 362624., 374216., 385808.,
      351308., 362912., 374516., 386120., 351584., 363200., 374816., 386432.,
      351860., 363488., 375116., 386744., 352136., 363776., 375416., 387056.,
      352412., 364064., 375716., 387368., 352688., 364352., 376016., 387680.,
      352964., 364640., 376316., 387992., 353240., 364928., 376616., 388304.,
      353516., 365216., 376916., 388616., 353792., 365504., 377216., 388928.,
      354068., 365792., 377516., 389240., 354344., 366080., 377816., 389552.,
      354620., 366368., 378116., 389864., 354896., 366656., 378416., 390176.,
      355172., 366944., 378716., 390488., 355448., 367232., 379016., 390800.,
      355724., 367520., 379316., 391112., 356000., 367808., 379616., 391424.,
      356276., 368096., 379916., 391736., 356552., 368384., 380216., 392048.,
      356828., 368672., 380516., 392360., 357104., 368960., 380816., 392672.,
      365108., 377312., 389516., 401720., 365384., 377600., 389816., 402032.,
      365660., 377888., 390116., 402344., 365936., 378176., 390416., 402656.,
      366212., 378464., 390716., 402968., 366488., 378752., 391016., 403280.,
      366764., 379040., 391316., 403592., 367040., 379328., 391616., 403904.,
      367316., 379616., 391916., 404216., 367592., 379904., 392216., 404528.,
      367868., 380192., 392516., 404840., 368144., 380480., 392816., 405152.,
      368420., 380768., 393116., 405464., 368696., 381056., 393416., 405776.,
      368972., 381344., 393716., 406088., 369248., 381632., 394016., 406400.,
      369524., 381920., 394316., 406712., 369800., 382208., 394616., 407024.,
      370076., 382496., 394916., 407336., 370352., 382784., 395216., 407648.,
      370628., 383072., 395516., 407960., 370904., 383360., 395816., 408272.,
      371180., 383648., 396116., 408584., 371456., 383936., 396416., 408896.,
      371732., 384224., 396716., 409208., 372008., 384512., 397016., 409520.,
      372284., 384800., 397316., 409832., 372560., 385088., 397616., 410144.,
      380564., 393440., 406316., 419192., 380840., 393728., 406616., 419504.,
      381116., 394016., 406916., 419816., 381392., 394304., 407216., 420128.,
      381668., 394592., 407516., 420440., 381944., 394880., 407816., 420752.,
      382220., 395168., 408116., 421064., 382496., 395456., 408416., 421376.,
      382772., 395744., 408716., 421688., 383048., 396032., 409016., 422000.,
      383324., 396320., 409316., 422312., 383600., 396608., 409616., 422624.,
      383876., 396896., 409916., 422936., 384152., 397184., 410216., 423248.,
      384428., 397472., 410516., 423560., 384704., 397760., 410816., 423872.,
      384980., 398048., 411116., 424184., 385256., 398336., 411416., 424496.,
      385532., 398624., 411716., 424808., 385808., 398912., 412016., 425120.,
      386084., 399200., 412316., 425432., 386360., 399488., 412616., 425744.,
      386636., 399776., 412916., 426056., 386912., 400064., 413216., 426368.,
      387188., 400352., 413516., 426680., 387464., 400640., 413816., 426992.,
      387740., 400928., 414116., 427304., 388016., 401216., 414416., 427616.};
  const std::array<int, 4> in_shape = {{3, 11, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      46776., 46968., 68466.,  68745.,  69024.,  44652., 44832.,
      63099., 63360., 92250.,  92628.,  93006.,  60084., 60327.,
      65970., 66231., 96408.,  96786.,  97164.,  62757., 63000.,
      68841., 69102., 100566., 100944., 101322., 65430., 65673.,
      71712., 71973., 104724., 105102., 105480., 68103., 68346.,
      41580., 41736., 60573.,  60798.,  61023.,  39288., 39432.,
      43296., 43452., 63048.,  63273.,  63498.,  40872., 41016.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      16746., 16824., 16902., 16980., 17058., 17136., 17214., 17604., 17682.,
      17760., 17838., 17916., 17994., 18072., 18462., 18540., 18618., 18696.,
      18774., 18852., 18930., 19320., 19398., 19476., 19554., 19632., 19710.,
      19788., 20178., 20256., 20334., 20412., 20490., 20568., 20646., 21036.,
      21114., 21192., 21270., 21348., 21426., 21504., 21894., 21972., 22050.,
      22128., 22206., 22284., 22362.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      91248.,  93552.,  91620.,  93936.,  133476., 136932., 134016., 137490.,
      134556., 138048., 86988.,  89304.,  87336.,  89664.,  122940., 126198.,
      123444., 126720., 179613., 184500., 180342., 185256., 181071., 186012.,
      116892., 120168., 117360., 120654., 128484., 131940., 128988., 132462.,
      187632., 192816., 188361., 193572., 189090., 194328., 122040., 125514.,
      122508., 126000., 134028., 137682., 134532., 138204., 195651., 201132.,
      196380., 201888., 197109., 202644., 127188., 130860., 127656., 131346.,
      139572., 143424., 140076., 143946., 203670., 209448., 204399., 210204.,
      205128., 210960., 132336., 136206., 132804., 136692., 80724.,  83160.,
      81024.,  83472.,  117492., 121146., 117924., 121596., 118356., 122046.,
      76128.,  78576.,  76404.,  78864.,  84024.,  86592.,  84324.,  86904.,
      122244., 126096., 122676., 126546., 123108., 126996., 79164.,  81744.,
      79440.,  82032.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      31608., 33492., 31752., 33648., 31896., 33804., 32040., 33960., 32184.,
      34116., 32328., 34272., 32472., 34428., 33192., 35208., 33336., 35364.,
      33480., 35520., 33624., 35676., 33768., 35832., 33912., 35988., 34056.,
      36144., 34776., 36924., 34920., 37080., 35064., 37236., 35208., 37392.,
      35352., 37548., 35496., 37704., 35640., 37860., 36360., 38640., 36504.,
      38796., 36648., 38952., 36792., 39108., 36936., 39264., 37080., 39420.,
      37224., 39576., 37944., 40356., 38088., 40512., 38232., 40668., 38376.,
      40824., 38520., 40980., 38664., 41136., 38808., 41292., 39528., 42072.,
      39672., 42228., 39816., 42384., 39960., 42540., 40104., 42696., 40248.,
      42852., 40392., 43008., 41112., 43788., 41256., 43944., 41400., 44100.,
      41544., 44256., 41688., 44412., 41832., 44568., 41976., 44724.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      180192., 182496., 184800., 187104., 180924., 183240., 185556., 187872.,
      263496., 266952., 270408., 273864., 264558., 268032., 271506., 274980.,
      265620., 269112., 272604., 276096., 171660., 173976., 176292., 178608.,
      172344., 174672., 177000., 179328., 242622., 245880., 249138., 252396.,
      243612., 246888., 250164., 253440., 354339., 359226., 364113., 369000.,
      355770., 360684., 365598., 370512., 357201., 362142., 367083., 372024.,
      230508., 233784., 237060., 240336., 231426., 234720., 238014., 241308.,
      253512., 256968., 260424., 263880., 254502., 257976., 261450., 264924.,
      370080., 375264., 380448., 385632., 371511., 376722., 381933., 387144.,
      372942., 378180., 383418., 388656., 240606., 244080., 247554., 251028.,
      241524., 245016., 248508., 252000., 264402., 268056., 271710., 275364.,
      265392., 269064., 272736., 276408., 385821., 391302., 396783., 402264.,
      387252., 392760., 398268., 403776., 388683., 394218., 399753., 405288.,
      250704., 254376., 258048., 261720., 251622., 255312., 259002., 262692.,
      275292., 279144., 282996., 286848., 276282., 280152., 284022., 287892.,
      401562., 407340., 413118., 418896., 402993., 408798., 414603., 420408.,
      404424., 410256., 416088., 421920., 260802., 264672., 268542., 272412.,
      261720., 265608., 269496., 273384., 159012., 161448., 163884., 166320.,
      159600., 162048., 164496., 166944., 231330., 234984., 238638., 242292.,
      232176., 235848., 239520., 243192., 233022., 236712., 240402., 244092.,
      149808., 152256., 154704., 157152., 150348., 152808., 155268., 157728.,
      165480., 168048., 170616., 173184., 166068., 168648., 171228., 173808.,
      240636., 244488., 248340., 252192., 241482., 245352., 249222., 253092.,
      242328., 246216., 250104., 253992., 155748., 158328., 160908., 163488.,
      156288., 158880., 161472., 164064.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      61332., 63216., 65100., 66984., 61608., 63504., 65400., 67296., 61884.,
      63792., 65700., 67608., 62160., 64080., 66000., 67920., 62436., 64368.,
      66300., 68232., 62712., 64656., 66600., 68544., 62988., 64944., 66900.,
      68856., 64368., 66384., 68400., 70416., 64644., 66672., 68700., 70728.,
      64920., 66960., 69000., 71040., 65196., 67248., 69300., 71352., 65472.,
      67536., 69600., 71664., 65748., 67824., 69900., 71976., 66024., 68112.,
      70200., 72288., 67404., 69552., 71700., 73848., 67680., 69840., 72000.,
      74160., 67956., 70128., 72300., 74472., 68232., 70416., 72600., 74784.,
      68508., 70704., 72900., 75096., 68784., 70992., 73200., 75408., 69060.,
      71280., 73500., 75720., 70440., 72720., 75000., 77280., 70716., 73008.,
      75300., 77592., 70992., 73296., 75600., 77904., 71268., 73584., 75900.,
      78216., 71544., 73872., 76200., 78528., 71820., 74160., 76500., 78840.,
      72096., 74448., 76800., 79152., 73476., 75888., 78300., 80712., 73752.,
      76176., 78600., 81024., 74028., 76464., 78900., 81336., 74304., 76752.,
      79200., 81648., 74580., 77040., 79500., 81960., 74856., 77328., 79800.,
      82272., 75132., 77616., 80100., 82584., 76512., 79056., 81600., 84144.,
      76788., 79344., 81900., 84456., 77064., 79632., 82200., 84768., 77340.,
      79920., 82500., 85080., 77616., 80208., 82800., 85392., 77892., 80496.,
      83100., 85704., 78168., 80784., 83400., 86016., 79548., 82224., 84900.,
      87576., 79824., 82512., 85200., 87888., 80100., 82800., 85500., 88200.,
      80376., 83088., 85800., 88512., 80652., 83376., 86100., 88824., 80928.,
      83664., 86400., 89136., 81204., 83952., 86700., 89448.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      93360.,  93552.,  93744.,  93936.,  136653., 136932., 137211., 137490.,
      137769., 138048., 89124.,  89304.,  89484.,  89664.,  125937., 126198.,
      126459., 126720., 184122., 184500., 184878., 185256., 185634., 186012.,
      119925., 120168., 120411., 120654., 131679., 131940., 132201., 132462.,
      192438., 192816., 193194., 193572., 193950., 194328., 125271., 125514.,
      125757., 126000., 137421., 137682., 137943., 138204., 200754., 201132.,
      201510., 201888., 202266., 202644., 130617., 130860., 131103., 131346.,
      143163., 143424., 143685., 143946., 209070., 209448., 209826., 210204.,
      210582., 210960., 135963., 136206., 136449., 136692., 83004.,  83160.,
      83316.,  83472.,  120921., 121146., 121371., 121596., 121821., 122046.,
      78432.,  78576.,  78720.,  78864.,  86436.,  86592.,  86748.,  86904.,
      125871., 126096., 126321., 126546., 126771., 126996., 81600.,  81744.,
      81888.,  82032.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      33414., 33492., 33570., 33648., 33726., 33804., 33882., 33960., 34038.,
      34116., 34194., 34272., 34350., 34428., 35130., 35208., 35286., 35364.,
      35442., 35520., 35598., 35676., 35754., 35832., 35910., 35988., 36066.,
      36144., 36846., 36924., 37002., 37080., 37158., 37236., 37314., 37392.,
      37470., 37548., 37626., 37704., 37782., 37860., 38562., 38640., 38718.,
      38796., 38874., 38952., 39030., 39108., 39186., 39264., 39342., 39420.,
      39498., 39576., 40278., 40356., 40434., 40512., 40590., 40668., 40746.,
      40824., 40902., 40980., 41058., 41136., 41214., 41292., 41994., 42072.,
      42150., 42228., 42306., 42384., 42462., 42540., 42618., 42696., 42774.,
      42852., 42930., 43008., 43710., 43788., 43866., 43944., 44022., 44100.,
      44178., 44256., 44334., 44412., 44490., 44568., 44646., 44724.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      182124., 186720., 182496., 187104., 182868., 187488., 183240., 187872.,
      266412., 273306., 266952., 273864., 267492., 274422., 268032., 274980.,
      268572., 275538., 269112., 276096., 173628., 178248., 173976., 178608.,
      174324., 178968., 174672., 179328., 245376., 251874., 245880., 252396.,
      246384., 252918., 246888., 253440., 358497., 368244., 359226., 369000.,
      359955., 369756., 360684., 370512., 361413., 371268., 362142., 372024.,
      233316., 239850., 233784., 240336., 234252., 240822., 234720., 241308.,
      256464., 263358., 256968., 263880., 257472., 264402., 257976., 264924.,
      374535., 384876., 375264., 385632., 375993., 386388., 376722., 387144.,
      377451., 387900., 378180., 388656., 243612., 250542., 244080., 251028.,
      244548., 251514., 245016., 252000., 267552., 274842., 268056., 275364.,
      268560., 275886., 269064., 276408., 390573., 401508., 391302., 402264.,
      392031., 403020., 392760., 403776., 393489., 404532., 394218., 405288.,
      253908., 261234., 254376., 261720., 254844., 262206., 255312., 262692.,
      278640., 286326., 279144., 286848., 279648., 287370., 280152., 287892.,
      406611., 418140., 407340., 418896., 408069., 419652., 408798., 420408.,
      409527., 421164., 410256., 421920., 264204., 271926., 264672., 272412.,
      265140., 272898., 265608., 273384., 161148., 166008., 161448., 166320.,
      161748., 166632., 162048., 166944., 234552., 241842., 234984., 242292.,
      235416., 242742., 235848., 243192., 236280., 243642., 236712., 244092.,
      151980., 156864., 152256., 157152., 152532., 157440., 152808., 157728.,
      167748., 172872., 168048., 173184., 168348., 173496., 168648., 173808.,
      244056., 251742., 244488., 252192., 244920., 252642., 245352., 253092.,
      245784., 253542., 246216., 253992., 158052., 163200., 158328., 163488.,
      158604., 163776., 158880., 164064.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      63072., 66828., 63216., 66984., 63360., 67140., 63504., 67296., 63648.,
      67452., 63792., 67608., 63936., 67764., 64080., 67920., 64224., 68076.,
      64368., 68232., 64512., 68388., 64656., 68544., 64800., 68700., 64944.,
      68856., 66240., 70260., 66384., 70416., 66528., 70572., 66672., 70728.,
      66816., 70884., 66960., 71040., 67104., 71196., 67248., 71352., 67392.,
      71508., 67536., 71664., 67680., 71820., 67824., 71976., 67968., 72132.,
      68112., 72288., 69408., 73692., 69552., 73848., 69696., 74004., 69840.,
      74160., 69984., 74316., 70128., 74472., 70272., 74628., 70416., 74784.,
      70560., 74940., 70704., 75096., 70848., 75252., 70992., 75408., 71136.,
      75564., 71280., 75720., 72576., 77124., 72720., 77280., 72864., 77436.,
      73008., 77592., 73152., 77748., 73296., 77904., 73440., 78060., 73584.,
      78216., 73728., 78372., 73872., 78528., 74016., 78684., 74160., 78840.,
      74304., 78996., 74448., 79152., 75744., 80556., 75888., 80712., 76032.,
      80868., 76176., 81024., 76320., 81180., 76464., 81336., 76608., 81492.,
      76752., 81648., 76896., 81804., 77040., 81960., 77184., 82116., 77328.,
      82272., 77472., 82428., 77616., 82584., 78912., 83988., 79056., 84144.,
      79200., 84300., 79344., 84456., 79488., 84612., 79632., 84768., 79776.,
      84924., 79920., 85080., 80064., 85236., 80208., 85392., 80352., 85548.,
      80496., 85704., 80640., 85860., 80784., 86016., 82080., 87420., 82224.,
      87576., 82368., 87732., 82512., 87888., 82656., 88044., 82800., 88200.,
      82944., 88356., 83088., 88512., 83232., 88668., 83376., 88824., 83520.,
      88980., 83664., 89136., 83808., 89292., 83952., 89448.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      359652., 364248., 368844., 373440., 360384., 364992., 369600., 374208.,
      361116., 365736., 370356., 374976., 361848., 366480., 371112., 375744.,
      525930., 532824., 539718., 546612., 526992., 533904., 540816., 547728.,
      528054., 534984., 541914., 548844., 529116., 536064., 543012., 549960.,
      530178., 537144., 544110., 551076., 531240., 538224., 545208., 552192.,
      342636., 347256., 351876., 356496., 343320., 347952., 352584., 357216.,
      344004., 348648., 353292., 357936., 344688., 349344., 354000., 358656.,
      484254., 490752., 497250., 503748., 485244., 491760., 498276., 504792.,
      486234., 492768., 499302., 505836., 487224., 493776., 500328., 506880.,
      707247., 716994., 726741., 736488., 708678., 718452., 728226., 738000.,
      710109., 719910., 729711., 739512., 711540., 721368., 731196., 741024.,
      712971., 722826., 732681., 742536., 714402., 724284., 734166., 744048.,
      460098., 466632., 473166., 479700., 461016., 467568., 474120., 480672.,
      461934., 468504., 475074., 481644., 462852., 469440., 476028., 482616.,
      506034., 512928., 519822., 526716., 507024., 513936., 520848., 527760.,
      508014., 514944., 521874., 528804., 509004., 515952., 522900., 529848.,
      738729., 749070., 759411., 769752., 740160., 750528., 760896., 771264.,
      741591., 751986., 762381., 772776., 743022., 753444., 763866., 774288.,
      744453., 754902., 765351., 775800., 745884., 756360., 766836., 777312.,
      480294., 487224., 494154., 501084., 481212., 488160., 495108., 502056.,
      482130., 489096., 496062., 503028., 483048., 490032., 497016., 504000.,
      527814., 535104., 542394., 549684., 528804., 536112., 543420., 550728.,
      529794., 537120., 544446., 551772., 530784., 538128., 545472., 552816.,
      770211., 781146., 792081., 803016., 771642., 782604., 793566., 804528.,
      773073., 784062., 795051., 806040., 774504., 785520., 796536., 807552.,
      775935., 786978., 798021., 809064., 777366., 788436., 799506., 810576.,
      500490., 507816., 515142., 522468., 501408., 508752., 516096., 523440.,
      502326., 509688., 517050., 524412., 503244., 510624., 518004., 525384.,
      549594., 557280., 564966., 572652., 550584., 558288., 565992., 573696.,
      551574., 559296., 567018., 574740., 552564., 560304., 568044., 575784.,
      801693., 813222., 824751., 836280., 803124., 814680., 826236., 837792.,
      804555., 816138., 827721., 839304., 805986., 817596., 829206., 840816.,
      807417., 819054., 830691., 842328., 808848., 820512., 832176., 843840.,
      520686., 528408., 536130., 543852., 521604., 529344., 537084., 544824.,
      522522., 530280., 538038., 545796., 523440., 531216., 538992., 546768.,
      317436., 322296., 327156., 332016., 318024., 322896., 327768., 332640.,
      318612., 323496., 328380., 333264., 319200., 324096., 328992., 333888.,
      461814., 469104., 476394., 483684., 462660., 469968., 477276., 484584.,
      463506., 470832., 478158., 485484., 464352., 471696., 479040., 486384.,
      465198., 472560., 479922., 487284., 466044., 473424., 480804., 488184.,
      299076., 303960., 308844., 313728., 299616., 304512., 309408., 314304.,
      300156., 305064., 309972., 314880., 300696., 305616., 310536., 315456.,
      330372., 335496., 340620., 345744., 330960., 336096., 341232., 346368.,
      331548., 336696., 341844., 346992., 332136., 337296., 342456., 347616.,
      480426., 488112., 495798., 503484., 481272., 488976., 496680., 504384.,
      482118., 489840., 497562., 505284., 482964., 490704., 498444., 506184.,
      483810., 491568., 499326., 507084., 484656., 492432., 500208., 507984.,
      310956., 316104., 321252., 326400., 311496., 316656., 321816., 326976.,
      312036., 317208., 322380., 327552., 312576., 317760., 322944., 328128.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      122388., 126144., 129900., 133656., 122664., 126432., 130200., 133968.,
      122940., 126720., 130500., 134280., 123216., 127008., 130800., 134592.,
      123492., 127296., 131100., 134904., 123768., 127584., 131400., 135216.,
      124044., 127872., 131700., 135528., 124320., 128160., 132000., 135840.,
      124596., 128448., 132300., 136152., 124872., 128736., 132600., 136464.,
      125148., 129024., 132900., 136776., 125424., 129312., 133200., 137088.,
      125700., 129600., 133500., 137400., 125976., 129888., 133800., 137712.,
      128460., 132480., 136500., 140520., 128736., 132768., 136800., 140832.,
      129012., 133056., 137100., 141144., 129288., 133344., 137400., 141456.,
      129564., 133632., 137700., 141768., 129840., 133920., 138000., 142080.,
      130116., 134208., 138300., 142392., 130392., 134496., 138600., 142704.,
      130668., 134784., 138900., 143016., 130944., 135072., 139200., 143328.,
      131220., 135360., 139500., 143640., 131496., 135648., 139800., 143952.,
      131772., 135936., 140100., 144264., 132048., 136224., 140400., 144576.,
      134532., 138816., 143100., 147384., 134808., 139104., 143400., 147696.,
      135084., 139392., 143700., 148008., 135360., 139680., 144000., 148320.,
      135636., 139968., 144300., 148632., 135912., 140256., 144600., 148944.,
      136188., 140544., 144900., 149256., 136464., 140832., 145200., 149568.,
      136740., 141120., 145500., 149880., 137016., 141408., 145800., 150192.,
      137292., 141696., 146100., 150504., 137568., 141984., 146400., 150816.,
      137844., 142272., 146700., 151128., 138120., 142560., 147000., 151440.,
      140604., 145152., 149700., 154248., 140880., 145440., 150000., 154560.,
      141156., 145728., 150300., 154872., 141432., 146016., 150600., 155184.,
      141708., 146304., 150900., 155496., 141984., 146592., 151200., 155808.,
      142260., 146880., 151500., 156120., 142536., 147168., 151800., 156432.,
      142812., 147456., 152100., 156744., 143088., 147744., 152400., 157056.,
      143364., 148032., 152700., 157368., 143640., 148320., 153000., 157680.,
      143916., 148608., 153300., 157992., 144192., 148896., 153600., 158304.,
      146676., 151488., 156300., 161112., 146952., 151776., 156600., 161424.,
      147228., 152064., 156900., 161736., 147504., 152352., 157200., 162048.,
      147780., 152640., 157500., 162360., 148056., 152928., 157800., 162672.,
      148332., 153216., 158100., 162984., 148608., 153504., 158400., 163296.,
      148884., 153792., 158700., 163608., 149160., 154080., 159000., 163920.,
      149436., 154368., 159300., 164232., 149712., 154656., 159600., 164544.,
      149988., 154944., 159900., 164856., 150264., 155232., 160200., 165168.,
      152748., 157824., 162900., 167976., 153024., 158112., 163200., 168288.,
      153300., 158400., 163500., 168600., 153576., 158688., 163800., 168912.,
      153852., 158976., 164100., 169224., 154128., 159264., 164400., 169536.,
      154404., 159552., 164700., 169848., 154680., 159840., 165000., 170160.,
      154956., 160128., 165300., 170472., 155232., 160416., 165600., 170784.,
      155508., 160704., 165900., 171096., 155784., 160992., 166200., 171408.,
      156060., 161280., 166500., 171720., 156336., 161568., 166800., 172032.,
      158820., 164160., 169500., 174840., 159096., 164448., 169800., 175152.,
      159372., 164736., 170100., 175464., 159648., 165024., 170400., 175776.,
      159924., 165312., 170700., 176088., 160200., 165600., 171000., 176400.,
      160476., 165888., 171300., 176712., 160752., 166176., 171600., 177024.,
      161028., 166464., 171900., 177336., 161304., 166752., 172200., 177648.,
      161580., 167040., 172500., 177960., 161856., 167328., 172800., 178272.,
      162132., 167616., 173100., 178584., 162408., 167904., 173400., 178896.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      186528., 186720., 186912., 187104., 187296., 187488., 187680., 187872.,
      273027., 273306., 273585., 273864., 274143., 274422., 274701., 274980.,
      275259., 275538., 275817., 276096., 178068., 178248., 178428., 178608.,
      178788., 178968., 179148., 179328., 251613., 251874., 252135., 252396.,
      252657., 252918., 253179., 253440., 367866., 368244., 368622., 369000.,
      369378., 369756., 370134., 370512., 370890., 371268., 371646., 372024.,
      239607., 239850., 240093., 240336., 240579., 240822., 241065., 241308.,
      263097., 263358., 263619., 263880., 264141., 264402., 264663., 264924.,
      384498., 384876., 385254., 385632., 386010., 386388., 386766., 387144.,
      387522., 387900., 388278., 388656., 250299., 250542., 250785., 251028.,
      251271., 251514., 251757., 252000., 274581., 274842., 275103., 275364.,
      275625., 275886., 276147., 276408., 401130., 401508., 401886., 402264.,
      402642., 403020., 403398., 403776., 404154., 404532., 404910., 405288.,
      260991., 261234., 261477., 261720., 261963., 262206., 262449., 262692.,
      286065., 286326., 286587., 286848., 287109., 287370., 287631., 287892.,
      417762., 418140., 418518., 418896., 419274., 419652., 420030., 420408.,
      420786., 421164., 421542., 421920., 271683., 271926., 272169., 272412.,
      272655., 272898., 273141., 273384., 165852., 166008., 166164., 166320.,
      166476., 166632., 166788., 166944., 241617., 241842., 242067., 242292.,
      242517., 242742., 242967., 243192., 243417., 243642., 243867., 244092.,
      156720., 156864., 157008., 157152., 157296., 157440., 157584., 157728.,
      172716., 172872., 173028., 173184., 173340., 173496., 173652., 173808.,
      251517., 251742., 251967., 252192., 252417., 252642., 252867., 253092.,
      253317., 253542., 253767., 253992., 163056., 163200., 163344., 163488.,
      163632., 163776., 163920., 164064.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      66750., 66828., 66906., 66984., 67062., 67140., 67218., 67296., 67374.,
      67452., 67530., 67608., 67686., 67764., 67842., 67920., 67998., 68076.,
      68154., 68232., 68310., 68388., 68466., 68544., 68622., 68700., 68778.,
      68856., 70182., 70260., 70338., 70416., 70494., 70572., 70650., 70728.,
      70806., 70884., 70962., 71040., 71118., 71196., 71274., 71352., 71430.,
      71508., 71586., 71664., 71742., 71820., 71898., 71976., 72054., 72132.,
      72210., 72288., 73614., 73692., 73770., 73848., 73926., 74004., 74082.,
      74160., 74238., 74316., 74394., 74472., 74550., 74628., 74706., 74784.,
      74862., 74940., 75018., 75096., 75174., 75252., 75330., 75408., 75486.,
      75564., 75642., 75720., 77046., 77124., 77202., 77280., 77358., 77436.,
      77514., 77592., 77670., 77748., 77826., 77904., 77982., 78060., 78138.,
      78216., 78294., 78372., 78450., 78528., 78606., 78684., 78762., 78840.,
      78918., 78996., 79074., 79152., 80478., 80556., 80634., 80712., 80790.,
      80868., 80946., 81024., 81102., 81180., 81258., 81336., 81414., 81492.,
      81570., 81648., 81726., 81804., 81882., 81960., 82038., 82116., 82194.,
      82272., 82350., 82428., 82506., 82584., 83910., 83988., 84066., 84144.,
      84222., 84300., 84378., 84456., 84534., 84612., 84690., 84768., 84846.,
      84924., 85002., 85080., 85158., 85236., 85314., 85392., 85470., 85548.,
      85626., 85704., 85782., 85860., 85938., 86016., 87342., 87420., 87498.,
      87576., 87654., 87732., 87810., 87888., 87966., 88044., 88122., 88200.,
      88278., 88356., 88434., 88512., 88590., 88668., 88746., 88824., 88902.,
      88980., 89058., 89136., 89214., 89292., 89370., 89448.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      363876., 373056., 364248., 373440., 364620., 373824., 364992., 374208.,
      365364., 374592., 365736., 374976., 366108., 375360., 366480., 375744.,
      532284., 546054., 532824., 546612., 533364., 547170., 533904., 547728.,
      534444., 548286., 534984., 548844., 535524., 549402., 536064., 549960.,
      536604., 550518., 537144., 551076., 537684., 551634., 538224., 552192.,
      346908., 356136., 347256., 356496., 347604., 356856., 347952., 357216.,
      348300., 357576., 348648., 357936., 348996., 358296., 349344., 358656.,
      490248., 503226., 490752., 503748., 491256., 504270., 491760., 504792.,
      492264., 505314., 492768., 505836., 493272., 506358., 493776., 506880.,
      716265., 735732., 716994., 736488., 717723., 737244., 718452., 738000.,
      719181., 738756., 719910., 739512., 720639., 740268., 721368., 741024.,
      722097., 741780., 722826., 742536., 723555., 743292., 724284., 744048.,
      466164., 479214., 466632., 479700., 467100., 480186., 467568., 480672.,
      468036., 481158., 468504., 481644., 468972., 482130., 469440., 482616.,
      512424., 526194., 512928., 526716., 513432., 527238., 513936., 527760.,
      514440., 528282., 514944., 528804., 515448., 529326., 515952., 529848.,
      748341., 768996., 749070., 769752., 749799., 770508., 750528., 771264.,
      751257., 772020., 751986., 772776., 752715., 773532., 753444., 774288.,
      754173., 775044., 754902., 775800., 755631., 776556., 756360., 777312.,
      486756., 500598., 487224., 501084., 487692., 501570., 488160., 502056.,
      488628., 502542., 489096., 503028., 489564., 503514., 490032., 504000.,
      534600., 549162., 535104., 549684., 535608., 550206., 536112., 550728.,
      536616., 551250., 537120., 551772., 537624., 552294., 538128., 552816.,
      780417., 802260., 781146., 803016., 781875., 803772., 782604., 804528.,
      783333., 805284., 784062., 806040., 784791., 806796., 785520., 807552.,
      786249., 808308., 786978., 809064., 787707., 809820., 788436., 810576.,
      507348., 521982., 507816., 522468., 508284., 522954., 508752., 523440.,
      509220., 523926., 509688., 524412., 510156., 524898., 510624., 525384.,
      556776., 572130., 557280., 572652., 557784., 573174., 558288., 573696.,
      558792., 574218., 559296., 574740., 559800., 575262., 560304., 575784.,
      812493., 835524., 813222., 836280., 813951., 837036., 814680., 837792.,
      815409., 838548., 816138., 839304., 816867., 840060., 817596., 840816.,
      818325., 841572., 819054., 842328., 819783., 843084., 820512., 843840.,
      527940., 543366., 528408., 543852., 528876., 544338., 529344., 544824.,
      529812., 545310., 530280., 545796., 530748., 546282., 531216., 546768.,
      321996., 331704., 322296., 332016., 322596., 332328., 322896., 332640.,
      323196., 332952., 323496., 333264., 323796., 333576., 324096., 333888.,
      468672., 483234., 469104., 483684., 469536., 484134., 469968., 484584.,
      470400., 485034., 470832., 485484., 471264., 485934., 471696., 486384.,
      472128., 486834., 472560., 487284., 472992., 487734., 473424., 488184.,
      303684., 313440., 303960., 313728., 304236., 314016., 304512., 314304.,
      304788., 314592., 305064., 314880., 305340., 315168., 305616., 315456.,
      335196., 345432., 335496., 345744., 335796., 346056., 336096., 346368.,
      336396., 346680., 336696., 346992., 336996., 347304., 337296., 347616.,
      487680., 503034., 488112., 503484., 488544., 503934., 488976., 504384.,
      489408., 504834., 489840., 505284., 490272., 505734., 490704., 506184.,
      491136., 506634., 491568., 507084., 492000., 507534., 492432., 507984.,
      315828., 326112., 316104., 326400., 316380., 326688., 316656., 326976.,
      316932., 327264., 317208., 327552., 317484., 327840., 317760., 328128.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      126000., 133500., 126144., 133656., 126288., 133812., 126432., 133968.,
      126576., 134124., 126720., 134280., 126864., 134436., 127008., 134592.,
      127152., 134748., 127296., 134904., 127440., 135060., 127584., 135216.,
      127728., 135372., 127872., 135528., 128016., 135684., 128160., 135840.,
      128304., 135996., 128448., 136152., 128592., 136308., 128736., 136464.,
      128880., 136620., 129024., 136776., 129168., 136932., 129312., 137088.,
      129456., 137244., 129600., 137400., 129744., 137556., 129888., 137712.,
      132336., 140364., 132480., 140520., 132624., 140676., 132768., 140832.,
      132912., 140988., 133056., 141144., 133200., 141300., 133344., 141456.,
      133488., 141612., 133632., 141768., 133776., 141924., 133920., 142080.,
      134064., 142236., 134208., 142392., 134352., 142548., 134496., 142704.,
      134640., 142860., 134784., 143016., 134928., 143172., 135072., 143328.,
      135216., 143484., 135360., 143640., 135504., 143796., 135648., 143952.,
      135792., 144108., 135936., 144264., 136080., 144420., 136224., 144576.,
      138672., 147228., 138816., 147384., 138960., 147540., 139104., 147696.,
      139248., 147852., 139392., 148008., 139536., 148164., 139680., 148320.,
      139824., 148476., 139968., 148632., 140112., 148788., 140256., 148944.,
      140400., 149100., 140544., 149256., 140688., 149412., 140832., 149568.,
      140976., 149724., 141120., 149880., 141264., 150036., 141408., 150192.,
      141552., 150348., 141696., 150504., 141840., 150660., 141984., 150816.,
      142128., 150972., 142272., 151128., 142416., 151284., 142560., 151440.,
      145008., 154092., 145152., 154248., 145296., 154404., 145440., 154560.,
      145584., 154716., 145728., 154872., 145872., 155028., 146016., 155184.,
      146160., 155340., 146304., 155496., 146448., 155652., 146592., 155808.,
      146736., 155964., 146880., 156120., 147024., 156276., 147168., 156432.,
      147312., 156588., 147456., 156744., 147600., 156900., 147744., 157056.,
      147888., 157212., 148032., 157368., 148176., 157524., 148320., 157680.,
      148464., 157836., 148608., 157992., 148752., 158148., 148896., 158304.,
      151344., 160956., 151488., 161112., 151632., 161268., 151776., 161424.,
      151920., 161580., 152064., 161736., 152208., 161892., 152352., 162048.,
      152496., 162204., 152640., 162360., 152784., 162516., 152928., 162672.,
      153072., 162828., 153216., 162984., 153360., 163140., 153504., 163296.,
      153648., 163452., 153792., 163608., 153936., 163764., 154080., 163920.,
      154224., 164076., 154368., 164232., 154512., 164388., 154656., 164544.,
      154800., 164700., 154944., 164856., 155088., 165012., 155232., 165168.,
      157680., 167820., 157824., 167976., 157968., 168132., 158112., 168288.,
      158256., 168444., 158400., 168600., 158544., 168756., 158688., 168912.,
      158832., 169068., 158976., 169224., 159120., 169380., 159264., 169536.,
      159408., 169692., 159552., 169848., 159696., 170004., 159840., 170160.,
      159984., 170316., 160128., 170472., 160272., 170628., 160416., 170784.,
      160560., 170940., 160704., 171096., 160848., 171252., 160992., 171408.,
      161136., 171564., 161280., 171720., 161424., 171876., 161568., 172032.,
      164016., 174684., 164160., 174840., 164304., 174996., 164448., 175152.,
      164592., 175308., 164736., 175464., 164880., 175620., 165024., 175776.,
      165168., 175932., 165312., 176088., 165456., 176244., 165600., 176400.,
      165744., 176556., 165888., 176712., 166032., 176868., 166176., 177024.,
      166320., 177180., 166464., 177336., 166608., 177492., 166752., 177648.,
      166896., 177804., 167040., 177960., 167184., 178116., 167328., 178272.,
      167472., 178428., 167616., 178584., 167760., 178740., 167904., 178896.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      718572.,  727752.,  736932.,  746112.,  719304.,  728496.,  737688.,
      746880.,  720036.,  729240.,  738444.,  747648.,  720768.,  729984.,
      739200.,  748416.,  721500.,  730728.,  739956.,  749184.,  722232.,
      731472.,  740712.,  749952.,  722964.,  732216.,  741468.,  750720.,
      723696.,  732960.,  742224.,  751488.,  1050798., 1064568., 1078338.,
      1092108., 1051860., 1065648., 1079436., 1093224., 1052922., 1066728.,
      1080534., 1094340., 1053984., 1067808., 1081632., 1095456., 1055046.,
      1068888., 1082730., 1096572., 1056108., 1069968., 1083828., 1097688.,
      1057170., 1071048., 1084926., 1098804., 1058232., 1072128., 1086024.,
      1099920., 1059294., 1073208., 1087122., 1101036., 1060356., 1074288.,
      1088220., 1102152., 1061418., 1075368., 1089318., 1103268., 1062480.,
      1076448., 1090416., 1104384., 684588.,  693816.,  703044.,  712272.,
      685272.,  694512.,  703752.,  712992.,  685956.,  695208.,  704460.,
      713712.,  686640.,  695904.,  705168.,  714432.,  687324.,  696600.,
      705876.,  715152.,  688008.,  697296.,  706584.,  715872.,  688692.,
      697992.,  707292.,  716592.,  689376.,  698688.,  708000.,  717312.,
      967518.,  980496.,  993474.,  1006452., 968508.,  981504.,  994500.,
      1007496., 969498.,  982512.,  995526.,  1008540., 970488.,  983520.,
      996552.,  1009584., 971478.,  984528.,  997578.,  1010628., 972468.,
      985536.,  998604.,  1011672., 973458.,  986544.,  999630.,  1012716.,
      974448.,  987552.,  1000656., 1013760., 1413063., 1432530., 1451997.,
      1471464., 1414494., 1433988., 1453482., 1472976., 1415925., 1435446.,
      1454967., 1474488., 1417356., 1436904., 1456452., 1476000., 1418787.,
      1438362., 1457937., 1477512., 1420218., 1439820., 1459422., 1479024.,
      1421649., 1441278., 1460907., 1480536., 1423080., 1442736., 1462392.,
      1482048., 1424511., 1444194., 1463877., 1483560., 1425942., 1445652.,
      1465362., 1485072., 1427373., 1447110., 1466847., 1486584., 1428804.,
      1448568., 1468332., 1488096., 919278.,  932328.,  945378.,  958428.,
      920196.,  933264.,  946332.,  959400.,  921114.,  934200.,  947286.,
      960372.,  922032.,  935136.,  948240.,  961344.,  922950.,  936072.,
      949194.,  962316.,  923868.,  937008.,  950148.,  963288.,  924786.,
      937944.,  951102.,  964260.,  925704.,  938880.,  952056.,  965232.,
      1011078., 1024848., 1038618., 1052388., 1012068., 1025856., 1039644.,
      1053432., 1013058., 1026864., 1040670., 1054476., 1014048., 1027872.,
      1041696., 1055520., 1015038., 1028880., 1042722., 1056564., 1016028.,
      1029888., 1043748., 1057608., 1017018., 1030896., 1044774., 1058652.,
      1018008., 1031904., 1045800., 1059696., 1476027., 1496682., 1517337.,
      1537992., 1477458., 1498140., 1518822., 1539504., 1478889., 1499598.,
      1520307., 1541016., 1480320., 1501056., 1521792., 1542528., 1481751.,
      1502514., 1523277., 1544040., 1483182., 1503972., 1524762., 1545552.,
      1484613., 1505430., 1526247., 1547064., 1486044., 1506888., 1527732.,
      1548576., 1487475., 1508346., 1529217., 1550088., 1488906., 1509804.,
      1530702., 1551600., 1490337., 1511262., 1532187., 1553112., 1491768.,
      1512720., 1533672., 1554624., 959670.,  973512.,  987354.,  1001196.,
      960588.,  974448.,  988308.,  1002168., 961506.,  975384.,  989262.,
      1003140., 962424.,  976320.,  990216.,  1004112., 963342.,  977256.,
      991170.,  1005084., 964260.,  978192.,  992124.,  1006056., 965178.,
      979128.,  993078.,  1007028., 966096.,  980064.,  994032.,  1008000.,
      1054638., 1069200., 1083762., 1098324., 1055628., 1070208., 1084788.,
      1099368., 1056618., 1071216., 1085814., 1100412., 1057608., 1072224.,
      1086840., 1101456., 1058598., 1073232., 1087866., 1102500., 1059588.,
      1074240., 1088892., 1103544., 1060578., 1075248., 1089918., 1104588.,
      1061568., 1076256., 1090944., 1105632., 1538991., 1560834., 1582677.,
      1604520., 1540422., 1562292., 1584162., 1606032., 1541853., 1563750.,
      1585647., 1607544., 1543284., 1565208., 1587132., 1609056., 1544715.,
      1566666., 1588617., 1610568., 1546146., 1568124., 1590102., 1612080.,
      1547577., 1569582., 1591587., 1613592., 1549008., 1571040., 1593072.,
      1615104., 1550439., 1572498., 1594557., 1616616., 1551870., 1573956.,
      1596042., 1618128., 1553301., 1575414., 1597527., 1619640., 1554732.,
      1576872., 1599012., 1621152., 1000062., 1014696., 1029330., 1043964.,
      1000980., 1015632., 1030284., 1044936., 1001898., 1016568., 1031238.,
      1045908., 1002816., 1017504., 1032192., 1046880., 1003734., 1018440.,
      1033146., 1047852., 1004652., 1019376., 1034100., 1048824., 1005570.,
      1020312., 1035054., 1049796., 1006488., 1021248., 1036008., 1050768.,
      1098198., 1113552., 1128906., 1144260., 1099188., 1114560., 1129932.,
      1145304., 1100178., 1115568., 1130958., 1146348., 1101168., 1116576.,
      1131984., 1147392., 1102158., 1117584., 1133010., 1148436., 1103148.,
      1118592., 1134036., 1149480., 1104138., 1119600., 1135062., 1150524.,
      1105128., 1120608., 1136088., 1151568., 1601955., 1624986., 1648017.,
      1671048., 1603386., 1626444., 1649502., 1672560., 1604817., 1627902.,
      1650987., 1674072., 1606248., 1629360., 1652472., 1675584., 1607679.,
      1630818., 1653957., 1677096., 1609110., 1632276., 1655442., 1678608.,
      1610541., 1633734., 1656927., 1680120., 1611972., 1635192., 1658412.,
      1681632., 1613403., 1636650., 1659897., 1683144., 1614834., 1638108.,
      1661382., 1684656., 1616265., 1639566., 1662867., 1686168., 1617696.,
      1641024., 1664352., 1687680., 1040454., 1055880., 1071306., 1086732.,
      1041372., 1056816., 1072260., 1087704., 1042290., 1057752., 1073214.,
      1088676., 1043208., 1058688., 1074168., 1089648., 1044126., 1059624.,
      1075122., 1090620., 1045044., 1060560., 1076076., 1091592., 1045962.,
      1061496., 1077030., 1092564., 1046880., 1062432., 1077984., 1093536.,
      634284.,  643992.,  653700.,  663408.,  634872.,  644592.,  654312.,
      664032.,  635460.,  645192.,  654924.,  664656.,  636048.,  645792.,
      655536.,  665280.,  636636.,  646392.,  656148.,  665904.,  637224.,
      646992.,  656760.,  666528.,  637812.,  647592.,  657372.,  667152.,
      638400.,  648192.,  657984.,  667776.,  922782.,  937344.,  951906.,
      966468.,  923628.,  938208.,  952788.,  967368.,  924474.,  939072.,
      953670.,  968268.,  925320.,  939936.,  954552.,  969168.,  926166.,
      940800.,  955434.,  970068.,  927012.,  941664.,  956316.,  970968.,
      927858.,  942528.,  957198.,  971868.,  928704.,  943392.,  958080.,
      972768.,  929550.,  944256.,  958962.,  973668.,  930396.,  945120.,
      959844.,  974568.,  931242.,  945984.,  960726.,  975468.,  932088.,
      946848.,  961608.,  976368.,  597612.,  607368.,  617124.,  626880.,
      598152.,  607920.,  617688.,  627456.,  598692.,  608472.,  618252.,
      628032.,  599232.,  609024.,  618816.,  628608.,  599772.,  609576.,
      619380.,  629184.,  600312.,  610128.,  619944.,  629760.,  600852.,
      610680.,  620508.,  630336.,  601392.,  611232.,  621072.,  630912.,
      660156.,  670392.,  680628.,  690864.,  660744.,  670992.,  681240.,
      691488.,  661332.,  671592.,  681852.,  692112.,  661920.,  672192.,
      682464.,  692736.,  662508.,  672792.,  683076.,  693360.,  663096.,
      673392.,  683688.,  693984.,  663684.,  673992.,  684300.,  694608.,
      664272.,  674592.,  684912.,  695232.,  960006.,  975360.,  990714.,
      1006068., 960852.,  976224.,  991596.,  1006968., 961698.,  977088.,
      992478.,  1007868., 962544.,  977952.,  993360.,  1008768., 963390.,
      978816.,  994242.,  1009668., 964236.,  979680.,  995124.,  1010568.,
      965082.,  980544.,  996006.,  1011468., 965928.,  981408.,  996888.,
      1012368., 966774.,  982272.,  997770.,  1013268., 967620.,  983136.,
      998652.,  1014168., 968466.,  984000.,  999534.,  1015068., 969312.,
      984864.,  1000416., 1015968., 621372.,  631656.,  641940.,  652224.,
      621912.,  632208.,  642504.,  652800.,  622452.,  632760.,  643068.,
      653376.,  622992.,  633312.,  643632.,  653952.,  623532.,  633864.,
      644196.,  654528.,  624072.,  634416.,  644760.,  655104.,  624612.,
      634968.,  645324.,  655680.,  625152.,  635520.,  645888.,  656256.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      244500., 252000., 259500., 267000., 244776., 252288., 259800., 267312.,
      245052., 252576., 260100., 267624., 245328., 252864., 260400., 267936.,
      245604., 253152., 260700., 268248., 245880., 253440., 261000., 268560.,
      246156., 253728., 261300., 268872., 246432., 254016., 261600., 269184.,
      246708., 254304., 261900., 269496., 246984., 254592., 262200., 269808.,
      247260., 254880., 262500., 270120., 247536., 255168., 262800., 270432.,
      247812., 255456., 263100., 270744., 248088., 255744., 263400., 271056.,
      248364., 256032., 263700., 271368., 248640., 256320., 264000., 271680.,
      248916., 256608., 264300., 271992., 249192., 256896., 264600., 272304.,
      249468., 257184., 264900., 272616., 249744., 257472., 265200., 272928.,
      250020., 257760., 265500., 273240., 250296., 258048., 265800., 273552.,
      250572., 258336., 266100., 273864., 250848., 258624., 266400., 274176.,
      251124., 258912., 266700., 274488., 251400., 259200., 267000., 274800.,
      251676., 259488., 267300., 275112., 251952., 259776., 267600., 275424.,
      256644., 264672., 272700., 280728., 256920., 264960., 273000., 281040.,
      257196., 265248., 273300., 281352., 257472., 265536., 273600., 281664.,
      257748., 265824., 273900., 281976., 258024., 266112., 274200., 282288.,
      258300., 266400., 274500., 282600., 258576., 266688., 274800., 282912.,
      258852., 266976., 275100., 283224., 259128., 267264., 275400., 283536.,
      259404., 267552., 275700., 283848., 259680., 267840., 276000., 284160.,
      259956., 268128., 276300., 284472., 260232., 268416., 276600., 284784.,
      260508., 268704., 276900., 285096., 260784., 268992., 277200., 285408.,
      261060., 269280., 277500., 285720., 261336., 269568., 277800., 286032.,
      261612., 269856., 278100., 286344., 261888., 270144., 278400., 286656.,
      262164., 270432., 278700., 286968., 262440., 270720., 279000., 287280.,
      262716., 271008., 279300., 287592., 262992., 271296., 279600., 287904.,
      263268., 271584., 279900., 288216., 263544., 271872., 280200., 288528.,
      263820., 272160., 280500., 288840., 264096., 272448., 280800., 289152.,
      268788., 277344., 285900., 294456., 269064., 277632., 286200., 294768.,
      269340., 277920., 286500., 295080., 269616., 278208., 286800., 295392.,
      269892., 278496., 287100., 295704., 270168., 278784., 287400., 296016.,
      270444., 279072., 287700., 296328., 270720., 279360., 288000., 296640.,
      270996., 279648., 288300., 296952., 271272., 279936., 288600., 297264.,
      271548., 280224., 288900., 297576., 271824., 280512., 289200., 297888.,
      272100., 280800., 289500., 298200., 272376., 281088., 289800., 298512.,
      272652., 281376., 290100., 298824., 272928., 281664., 290400., 299136.,
      273204., 281952., 290700., 299448., 273480., 282240., 291000., 299760.,
      273756., 282528., 291300., 300072., 274032., 282816., 291600., 300384.,
      274308., 283104., 291900., 300696., 274584., 283392., 292200., 301008.,
      274860., 283680., 292500., 301320., 275136., 283968., 292800., 301632.,
      275412., 284256., 293100., 301944., 275688., 284544., 293400., 302256.,
      275964., 284832., 293700., 302568., 276240., 285120., 294000., 302880.,
      280932., 290016., 299100., 308184., 281208., 290304., 299400., 308496.,
      281484., 290592., 299700., 308808., 281760., 290880., 300000., 309120.,
      282036., 291168., 300300., 309432., 282312., 291456., 300600., 309744.,
      282588., 291744., 300900., 310056., 282864., 292032., 301200., 310368.,
      283140., 292320., 301500., 310680., 283416., 292608., 301800., 310992.,
      283692., 292896., 302100., 311304., 283968., 293184., 302400., 311616.,
      284244., 293472., 302700., 311928., 284520., 293760., 303000., 312240.,
      284796., 294048., 303300., 312552., 285072., 294336., 303600., 312864.,
      285348., 294624., 303900., 313176., 285624., 294912., 304200., 313488.,
      285900., 295200., 304500., 313800., 286176., 295488., 304800., 314112.,
      286452., 295776., 305100., 314424., 286728., 296064., 305400., 314736.,
      287004., 296352., 305700., 315048., 287280., 296640., 306000., 315360.,
      287556., 296928., 306300., 315672., 287832., 297216., 306600., 315984.,
      288108., 297504., 306900., 316296., 288384., 297792., 307200., 316608.,
      293076., 302688., 312300., 321912., 293352., 302976., 312600., 322224.,
      293628., 303264., 312900., 322536., 293904., 303552., 313200., 322848.,
      294180., 303840., 313500., 323160., 294456., 304128., 313800., 323472.,
      294732., 304416., 314100., 323784., 295008., 304704., 314400., 324096.,
      295284., 304992., 314700., 324408., 295560., 305280., 315000., 324720.,
      295836., 305568., 315300., 325032., 296112., 305856., 315600., 325344.,
      296388., 306144., 315900., 325656., 296664., 306432., 316200., 325968.,
      296940., 306720., 316500., 326280., 297216., 307008., 316800., 326592.,
      297492., 307296., 317100., 326904., 297768., 307584., 317400., 327216.,
      298044., 307872., 317700., 327528., 298320., 308160., 318000., 327840.,
      298596., 308448., 318300., 328152., 298872., 308736., 318600., 328464.,
      299148., 309024., 318900., 328776., 299424., 309312., 319200., 329088.,
      299700., 309600., 319500., 329400., 299976., 309888., 319800., 329712.,
      300252., 310176., 320100., 330024., 300528., 310464., 320400., 330336.,
      305220., 315360., 325500., 335640., 305496., 315648., 325800., 335952.,
      305772., 315936., 326100., 336264., 306048., 316224., 326400., 336576.,
      306324., 316512., 326700., 336888., 306600., 316800., 327000., 337200.,
      306876., 317088., 327300., 337512., 307152., 317376., 327600., 337824.,
      307428., 317664., 327900., 338136., 307704., 317952., 328200., 338448.,
      307980., 318240., 328500., 338760., 308256., 318528., 328800., 339072.,
      308532., 318816., 329100., 339384., 308808., 319104., 329400., 339696.,
      309084., 319392., 329700., 340008., 309360., 319680., 330000., 340320.,
      309636., 319968., 330300., 340632., 309912., 320256., 330600., 340944.,
      310188., 320544., 330900., 341256., 310464., 320832., 331200., 341568.,
      310740., 321120., 331500., 341880., 311016., 321408., 331800., 342192.,
      311292., 321696., 332100., 342504., 311568., 321984., 332400., 342816.,
      311844., 322272., 332700., 343128., 312120., 322560., 333000., 343440.,
      312396., 322848., 333300., 343752., 312672., 323136., 333600., 344064.,
      317364., 328032., 338700., 349368., 317640., 328320., 339000., 349680.,
      317916., 328608., 339300., 349992., 318192., 328896., 339600., 350304.,
      318468., 329184., 339900., 350616., 318744., 329472., 340200., 350928.,
      319020., 329760., 340500., 351240., 319296., 330048., 340800., 351552.,
      319572., 330336., 341100., 351864., 319848., 330624., 341400., 352176.,
      320124., 330912., 341700., 352488., 320400., 331200., 342000., 352800.,
      320676., 331488., 342300., 353112., 320952., 331776., 342600., 353424.,
      321228., 332064., 342900., 353736., 321504., 332352., 343200., 354048.,
      321780., 332640., 343500., 354360., 322056., 332928., 343800., 354672.,
      322332., 333216., 344100., 354984., 322608., 333504., 344400., 355296.,
      322884., 333792., 344700., 355608., 323160., 334080., 345000., 355920.,
      323436., 334368., 345300., 356232., 323712., 334656., 345600., 356544.,
      323988., 334944., 345900., 356856., 324264., 335232., 346200., 357168.,
      324540., 335520., 346500., 357480., 324816., 335808., 346800., 357792.};
  const std::array<int, 4> in_shape = {{3, 12, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      51132., 74559.,  74838.,  75117.,  75396.,  48792., 48972.,
      68976., 100458., 100836., 101214., 101592., 65655., 65898.,
      72108., 104994., 105372., 105750., 106128., 68571., 68814.,
      75240., 109530., 109908., 110286., 110664., 71487., 71730.,
      78372., 114066., 114444., 114822., 115200., 74403., 74646.,
      45444., 65973.,  66198.,  66423.,  66648.,  42924., 43068.,
      47316., 68673.,  68898.,  69123.,  69348.,  44652., 44796.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      18246., 18324., 18402., 18480., 18558., 18636., 18714., 19182., 19260.,
      19338., 19416., 19494., 19572., 19650., 20118., 20196., 20274., 20352.,
      20430., 20508., 20586., 21054., 21132., 21210., 21288., 21366., 21444.,
      21522., 21990., 22068., 22146., 22224., 22302., 22380., 22458., 22926.,
      23004., 23082., 23160., 23238., 23316., 23394., 23862., 23940., 24018.,
      24096., 24174., 24252., 24330.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      99744.,  102264., 145356., 149118., 145896., 149676., 146436., 150234.,
      146976., 150792., 95052.,  97584.,  95400.,  97944.,  134388., 137952.,
      195597., 200916., 196326., 201672., 197055., 202428., 197784., 203184.,
      127728., 131310., 128196., 131796., 140436., 144216., 204345., 209988.,
      205074., 210744., 205803., 211500., 206532., 212256., 133344., 137142.,
      133812., 137628., 146484., 150480., 213093., 219060., 213822., 219816.,
      214551., 220572., 215280., 221328., 138960., 142974., 139428., 143460.,
      152532., 156744., 221841., 228132., 222570., 228888., 223299., 229644.,
      224028., 230400., 144576., 148806., 145044., 149292., 88224.,  90888.,
      127968., 131946., 128400., 132396., 128832., 132846., 129264., 133296.,
      83172.,  85848.,  83448.,  86136.,  91824.,  94632.,  133152., 137346.,
      133584., 137796., 134016., 138246., 134448., 138696., 86484.,  89304.,
      86760.,  89592.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      34440., 36492., 34584., 36648., 34728., 36804., 34872., 36960., 35016.,
      37116., 35160., 37272., 35304., 37428., 36168., 38364., 36312., 38520.,
      36456., 38676., 36600., 38832., 36744., 38988., 36888., 39144., 37032.,
      39300., 37896., 40236., 38040., 40392., 38184., 40548., 38328., 40704.,
      38472., 40860., 38616., 41016., 38760., 41172., 39624., 42108., 39768.,
      42264., 39912., 42420., 40056., 42576., 40200., 42732., 40344., 42888.,
      40488., 43044., 41352., 43980., 41496., 44136., 41640., 44292., 41784.,
      44448., 41928., 44604., 42072., 44760., 42216., 44916., 43080., 45852.,
      43224., 46008., 43368., 46164., 43512., 46320., 43656., 46476., 43800.,
      46632., 43944., 46788., 44808., 47724., 44952., 47880., 45096., 48036.,
      45240., 48192., 45384., 48348., 45528., 48504., 45672., 48660.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      196968., 199488., 202008., 204528., 286950., 290712., 294474., 298236.,
      288012., 291792., 295572., 299352., 289074., 292872., 296670., 300468.,
      290136., 293952., 297768., 301584., 187572., 190104., 192636., 195168.,
      188256., 190800., 193344., 195888., 265212., 268776., 272340., 275904.,
      385875., 391194., 396513., 401832., 387306., 392652., 397998., 403344.,
      388737., 394110., 399483., 404856., 390168., 395568., 400968., 406368.,
      251874., 255456., 259038., 262620., 252792., 256392., 259992., 263592.,
      277092., 280872., 284652., 288432., 403047., 408690., 414333., 419976.,
      404478., 410148., 415818., 421488., 405909., 411606., 417303., 423000.,
      407340., 413064., 418788., 424512., 262890., 266688., 270486., 274284.,
      263808., 267624., 271440., 275256., 288972., 292968., 296964., 300960.,
      420219., 426186., 432153., 438120., 421650., 427644., 433638., 439632.,
      423081., 429102., 435123., 441144., 424512., 430560., 436608., 442656.,
      273906., 277920., 281934., 285948., 274824., 278856., 282888., 286920.,
      300852., 305064., 309276., 313488., 437391., 443682., 449973., 456264.,
      438822., 445140., 451458., 457776., 440253., 446598., 452943., 459288.,
      441684., 448056., 454428., 460800., 284922., 289152., 293382., 297612.,
      285840., 290088., 294336., 298584., 173784., 176448., 179112., 181776.,
      251958., 255936., 259914., 263892., 252804., 256800., 260796., 264792.,
      253650., 257664., 261678., 265692., 254496., 258528., 262560., 266592.,
      163668., 166344., 169020., 171696., 164208., 166896., 169584., 172272.,
      180840., 183648., 186456., 189264., 262110., 266304., 270498., 274692.,
      262956., 267168., 271380., 275592., 263802., 268032., 272262., 276492.,
      264648., 268896., 273144., 277392., 170148., 172968., 175788., 178608.,
      170688., 173520., 176352., 179184.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      66828., 68880., 70932., 72984., 67104., 69168., 71232., 73296., 67380.,
      69456., 71532., 73608., 67656., 69744., 71832., 73920., 67932., 70032.,
      72132., 74232., 68208., 70320., 72432., 74544., 68484., 70608., 72732.,
      74856., 70140., 72336., 74532., 76728., 70416., 72624., 74832., 77040.,
      70692., 72912., 75132., 77352., 70968., 73200., 75432., 77664., 71244.,
      73488., 75732., 77976., 71520., 73776., 76032., 78288., 71796., 74064.,
      76332., 78600., 73452., 75792., 78132., 80472., 73728., 76080., 78432.,
      80784., 74004., 76368., 78732., 81096., 74280., 76656., 79032., 81408.,
      74556., 76944., 79332., 81720., 74832., 77232., 79632., 82032., 75108.,
      77520., 79932., 82344., 76764., 79248., 81732., 84216., 77040., 79536.,
      82032., 84528., 77316., 79824., 82332., 84840., 77592., 80112., 82632.,
      85152., 77868., 80400., 82932., 85464., 78144., 80688., 83232., 85776.,
      78420., 80976., 83532., 86088., 80076., 82704., 85332., 87960., 80352.,
      82992., 85632., 88272., 80628., 83280., 85932., 88584., 80904., 83568.,
      86232., 88896., 81180., 83856., 86532., 89208., 81456., 84144., 86832.,
      89520., 81732., 84432., 87132., 89832., 83388., 86160., 88932., 91704.,
      83664., 86448., 89232., 92016., 83940., 86736., 89532., 92328., 84216.,
      87024., 89832., 92640., 84492., 87312., 90132., 92952., 84768., 87600.,
      90432., 93264., 85044., 87888., 90732., 93576., 86700., 89616., 92532.,
      95448., 86976., 89904., 92832., 95760., 87252., 90192., 93132., 96072.,
      87528., 90480., 93432., 96384., 87804., 90768., 93732., 96696., 88080.,
      91056., 94032., 97008., 88356., 91344., 94332., 97320.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      102072., 102264., 148839., 149118., 149397., 149676., 149955., 150234.,
      150513., 150792., 97404.,  97584.,  97764.,  97944.,  137691., 137952.,
      200538., 200916., 201294., 201672., 202050., 202428., 202806., 203184.,
      131067., 131310., 131553., 131796., 143955., 144216., 209610., 209988.,
      210366., 210744., 211122., 211500., 211878., 212256., 136899., 137142.,
      137385., 137628., 150219., 150480., 218682., 219060., 219438., 219816.,
      220194., 220572., 220950., 221328., 142731., 142974., 143217., 143460.,
      156483., 156744., 227754., 228132., 228510., 228888., 229266., 229644.,
      230022., 230400., 148563., 148806., 149049., 149292., 90732.,  90888.,
      131721., 131946., 132171., 132396., 132621., 132846., 133071., 133296.,
      85704.,  85848.,  85992.,  86136.,  94476.,  94632.,  137121., 137346.,
      137571., 137796., 138021., 138246., 138471., 138696., 89160.,  89304.,
      89448.,  89592.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      36414., 36492., 36570., 36648., 36726., 36804., 36882., 36960., 37038.,
      37116., 37194., 37272., 37350., 37428., 38286., 38364., 38442., 38520.,
      38598., 38676., 38754., 38832., 38910., 38988., 39066., 39144., 39222.,
      39300., 40158., 40236., 40314., 40392., 40470., 40548., 40626., 40704.,
      40782., 40860., 40938., 41016., 41094., 41172., 42030., 42108., 42186.,
      42264., 42342., 42420., 42498., 42576., 42654., 42732., 42810., 42888.,
      42966., 43044., 43902., 43980., 44058., 44136., 44214., 44292., 44370.,
      44448., 44526., 44604., 44682., 44760., 44838., 44916., 45774., 45852.,
      45930., 46008., 46086., 46164., 46242., 46320., 46398., 46476., 46554.,
      46632., 46710., 46788., 47646., 47724., 47802., 47880., 47958., 48036.,
      48114., 48192., 48270., 48348., 48426., 48504., 48582., 48660.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      199116., 204144., 199488., 204528., 290172., 297678., 290712., 298236.,
      291252., 298794., 291792., 299352., 292332., 299910., 292872., 300468.,
      293412., 301026., 293952., 301584., 189756., 194808., 190104., 195168.,
      190452., 195528., 190800., 195888., 268272., 275382., 268776., 275904.,
      390465., 401076., 391194., 401832., 391923., 402588., 392652., 403344.,
      393381., 404100., 394110., 404856., 394839., 405612., 395568., 406368.,
      254988., 262134., 255456., 262620., 255924., 263106., 256392., 263592.,
      280368., 287910., 280872., 288432., 407961., 419220., 408690., 419976.,
      409419., 420732., 410148., 421488., 410877., 422244., 411606., 423000.,
      412335., 423756., 413064., 424512., 266220., 273798., 266688., 274284.,
      267156., 274770., 267624., 275256., 292464., 300438., 292968., 300960.,
      425457., 437364., 426186., 438120., 426915., 438876., 427644., 439632.,
      428373., 440388., 429102., 441144., 429831., 441900., 430560., 442656.,
      277452., 285462., 277920., 285948., 278388., 286434., 278856., 286920.,
      304560., 312966., 305064., 313488., 442953., 455508., 443682., 456264.,
      444411., 457020., 445140., 457776., 445869., 458532., 446598., 459288.,
      447327., 460044., 448056., 460800., 288684., 297126., 289152., 297612.,
      289620., 298098., 290088., 298584., 176148., 181464., 176448., 181776.,
      255504., 263442., 255936., 263892., 256368., 264342., 256800., 264792.,
      257232., 265242., 257664., 265692., 258096., 266142., 258528., 266592.,
      166068., 171408., 166344., 171696., 166620., 171984., 166896., 172272.,
      183348., 188952., 183648., 189264., 265872., 274242., 266304., 274692.,
      266736., 275142., 267168., 275592., 267600., 276042., 268032., 276492.,
      268464., 276942., 268896., 277392., 172692., 178320., 172968., 178608.,
      173244., 178896., 173520., 179184.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      68736., 72828., 68880., 72984., 69024., 73140., 69168., 73296., 69312.,
      73452., 69456., 73608., 69600., 73764., 69744., 73920., 69888., 74076.,
      70032., 74232., 70176., 74388., 70320., 74544., 70464., 74700., 70608.,
      74856., 72192., 76572., 72336., 76728., 72480., 76884., 72624., 77040.,
      72768., 77196., 72912., 77352., 73056., 77508., 73200., 77664., 73344.,
      77820., 73488., 77976., 73632., 78132., 73776., 78288., 73920., 78444.,
      74064., 78600., 75648., 80316., 75792., 80472., 75936., 80628., 76080.,
      80784., 76224., 80940., 76368., 81096., 76512., 81252., 76656., 81408.,
      76800., 81564., 76944., 81720., 77088., 81876., 77232., 82032., 77376.,
      82188., 77520., 82344., 79104., 84060., 79248., 84216., 79392., 84372.,
      79536., 84528., 79680., 84684., 79824., 84840., 79968., 84996., 80112.,
      85152., 80256., 85308., 80400., 85464., 80544., 85620., 80688., 85776.,
      80832., 85932., 80976., 86088., 82560., 87804., 82704., 87960., 82848.,
      88116., 82992., 88272., 83136., 88428., 83280., 88584., 83424., 88740.,
      83568., 88896., 83712., 89052., 83856., 89208., 84000., 89364., 84144.,
      89520., 84288., 89676., 84432., 89832., 86016., 91548., 86160., 91704.,
      86304., 91860., 86448., 92016., 86592., 92172., 86736., 92328., 86880.,
      92484., 87024., 92640., 87168., 92796., 87312., 92952., 87456., 93108.,
      87600., 93264., 87744., 93420., 87888., 93576., 89472., 95292., 89616.,
      95448., 89760., 95604., 89904., 95760., 90048., 95916., 90192., 96072.,
      90336., 96228., 90480., 96384., 90624., 96540., 90768., 96696., 90912.,
      96852., 91056., 97008., 91200., 97164., 91344., 97320.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      393204., 398232., 403260., 408288., 393936., 398976., 404016., 409056.,
      572838., 580344., 587850., 595356., 573900., 581424., 588948., 596472.,
      574962., 582504., 590046., 597588., 576024., 583584., 591144., 598704.,
      577086., 584664., 592242., 599820., 578148., 585744., 593340., 600936.,
      579210., 586824., 594438., 602052., 580272., 587904., 595536., 603168.,
      374460., 379512., 384564., 389616., 375144., 380208., 385272., 390336.,
      375828., 380904., 385980., 391056., 376512., 381600., 386688., 391776.,
      529434., 536544., 543654., 550764., 530424., 537552., 544680., 551808.,
      770319., 780930., 791541., 802152., 771750., 782388., 793026., 803664.,
      773181., 783846., 794511., 805176., 774612., 785304., 795996., 806688.,
      776043., 786762., 797481., 808200., 777474., 788220., 798966., 809712.,
      778905., 789678., 800451., 811224., 780336., 791136., 801936., 812736.,
      502830., 509976., 517122., 524268., 503748., 510912., 518076., 525240.,
      504666., 511848., 519030., 526212., 505584., 512784., 519984., 527184.,
      553194., 560736., 568278., 575820., 554184., 561744., 569304., 576864.,
      804663., 815922., 827181., 838440., 806094., 817380., 828666., 839952.,
      807525., 818838., 830151., 841464., 808956., 820296., 831636., 842976.,
      810387., 821754., 833121., 844488., 811818., 823212., 834606., 846000.,
      813249., 824670., 836091., 847512., 814680., 826128., 837576., 849024.,
      524862., 532440., 540018., 547596., 525780., 533376., 540972., 548568.,
      526698., 534312., 541926., 549540., 527616., 535248., 542880., 550512.,
      576954., 584928., 592902., 600876., 577944., 585936., 593928., 601920.,
      839007., 850914., 862821., 874728., 840438., 852372., 864306., 876240.,
      841869., 853830., 865791., 877752., 843300., 855288., 867276., 879264.,
      844731., 856746., 868761., 880776., 846162., 858204., 870246., 882288.,
      847593., 859662., 871731., 883800., 849024., 861120., 873216., 885312.,
      546894., 554904., 562914., 570924., 547812., 555840., 563868., 571896.,
      548730., 556776., 564822., 572868., 549648., 557712., 565776., 573840.,
      600714., 609120., 617526., 625932., 601704., 610128., 618552., 626976.,
      873351., 885906., 898461., 911016., 874782., 887364., 899946., 912528.,
      876213., 888822., 901431., 914040., 877644., 890280., 902916., 915552.,
      879075., 891738., 904401., 917064., 880506., 893196., 905886., 918576.,
      881937., 894654., 907371., 920088., 883368., 896112., 908856., 921600.,
      568926., 577368., 585810., 594252., 569844., 578304., 586764., 595224.,
      570762., 579240., 587718., 596196., 571680., 580176., 588672., 597168.,
      346980., 352296., 357612., 362928., 347568., 352896., 358224., 363552.,
      503070., 511008., 518946., 526884., 503916., 511872., 519828., 527784.,
      504762., 512736., 520710., 528684., 505608., 513600., 521592., 529584.,
      506454., 514464., 522474., 530484., 507300., 515328., 523356., 531384.,
      508146., 516192., 524238., 532284., 508992., 517056., 525120., 533184.,
      326796., 332136., 337476., 342816., 327336., 332688., 338040., 343392.,
      327876., 333240., 338604., 343968., 328416., 333792., 339168., 344544.,
      361092., 366696., 372300., 377904., 361680., 367296., 372912., 378528.,
      523374., 531744., 540114., 548484., 524220., 532608., 540996., 549384.,
      525066., 533472., 541878., 550284., 525912., 534336., 542760., 551184.,
      526758., 535200., 543642., 552084., 527604., 536064., 544524., 552984.,
      528450., 536928., 545406., 553884., 529296., 537792., 546288., 554784.,
      339756., 345384., 351012., 356640., 340296., 345936., 351576., 357216.,
      340836., 346488., 352140., 357792., 341376., 347040., 352704., 358368.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      133380., 137472., 141564., 145656., 133656., 137760., 141864., 145968.,
      133932., 138048., 142164., 146280., 134208., 138336., 142464., 146592.,
      134484., 138624., 142764., 146904., 134760., 138912., 143064., 147216.,
      135036., 139200., 143364., 147528., 135312., 139488., 143664., 147840.,
      135588., 139776., 143964., 148152., 135864., 140064., 144264., 148464.,
      136140., 140352., 144564., 148776., 136416., 140640., 144864., 149088.,
      136692., 140928., 145164., 149400., 136968., 141216., 145464., 149712.,
      140004., 144384., 148764., 153144., 140280., 144672., 149064., 153456.,
      140556., 144960., 149364., 153768., 140832., 145248., 149664., 154080.,
      141108., 145536., 149964., 154392., 141384., 145824., 150264., 154704.,
      141660., 146112., 150564., 155016., 141936., 146400., 150864., 155328.,
      142212., 146688., 151164., 155640., 142488., 146976., 151464., 155952.,
      142764., 147264., 151764., 156264., 143040., 147552., 152064., 156576.,
      143316., 147840., 152364., 156888., 143592., 148128., 152664., 157200.,
      146628., 151296., 155964., 160632., 146904., 151584., 156264., 160944.,
      147180., 151872., 156564., 161256., 147456., 152160., 156864., 161568.,
      147732., 152448., 157164., 161880., 148008., 152736., 157464., 162192.,
      148284., 153024., 157764., 162504., 148560., 153312., 158064., 162816.,
      148836., 153600., 158364., 163128., 149112., 153888., 158664., 163440.,
      149388., 154176., 158964., 163752., 149664., 154464., 159264., 164064.,
      149940., 154752., 159564., 164376., 150216., 155040., 159864., 164688.,
      153252., 158208., 163164., 168120., 153528., 158496., 163464., 168432.,
      153804., 158784., 163764., 168744., 154080., 159072., 164064., 169056.,
      154356., 159360., 164364., 169368., 154632., 159648., 164664., 169680.,
      154908., 159936., 164964., 169992., 155184., 160224., 165264., 170304.,
      155460., 160512., 165564., 170616., 155736., 160800., 165864., 170928.,
      156012., 161088., 166164., 171240., 156288., 161376., 166464., 171552.,
      156564., 161664., 166764., 171864., 156840., 161952., 167064., 172176.,
      159876., 165120., 170364., 175608., 160152., 165408., 170664., 175920.,
      160428., 165696., 170964., 176232., 160704., 165984., 171264., 176544.,
      160980., 166272., 171564., 176856., 161256., 166560., 171864., 177168.,
      161532., 166848., 172164., 177480., 161808., 167136., 172464., 177792.,
      162084., 167424., 172764., 178104., 162360., 167712., 173064., 178416.,
      162636., 168000., 173364., 178728., 162912., 168288., 173664., 179040.,
      163188., 168576., 173964., 179352., 163464., 168864., 174264., 179664.,
      166500., 172032., 177564., 183096., 166776., 172320., 177864., 183408.,
      167052., 172608., 178164., 183720., 167328., 172896., 178464., 184032.,
      167604., 173184., 178764., 184344., 167880., 173472., 179064., 184656.,
      168156., 173760., 179364., 184968., 168432., 174048., 179664., 185280.,
      168708., 174336., 179964., 185592., 168984., 174624., 180264., 185904.,
      169260., 174912., 180564., 186216., 169536., 175200., 180864., 186528.,
      169812., 175488., 181164., 186840., 170088., 175776., 181464., 187152.,
      173124., 178944., 184764., 190584., 173400., 179232., 185064., 190896.,
      173676., 179520., 185364., 191208., 173952., 179808., 185664., 191520.,
      174228., 180096., 185964., 191832., 174504., 180384., 186264., 192144.,
      174780., 180672., 186564., 192456., 175056., 180960., 186864., 192768.,
      175332., 181248., 187164., 193080., 175608., 181536., 187464., 193392.,
      175884., 181824., 187764., 193704., 176160., 182112., 188064., 194016.,
      176436., 182400., 188364., 194328., 176712., 182688., 188664., 194640.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      203952., 204144., 204336., 204528., 297399., 297678., 297957., 298236.,
      298515., 298794., 299073., 299352., 299631., 299910., 300189., 300468.,
      300747., 301026., 301305., 301584., 194628., 194808., 194988., 195168.,
      195348., 195528., 195708., 195888., 275121., 275382., 275643., 275904.,
      400698., 401076., 401454., 401832., 402210., 402588., 402966., 403344.,
      403722., 404100., 404478., 404856., 405234., 405612., 405990., 406368.,
      261891., 262134., 262377., 262620., 262863., 263106., 263349., 263592.,
      287649., 287910., 288171., 288432., 418842., 419220., 419598., 419976.,
      420354., 420732., 421110., 421488., 421866., 422244., 422622., 423000.,
      423378., 423756., 424134., 424512., 273555., 273798., 274041., 274284.,
      274527., 274770., 275013., 275256., 300177., 300438., 300699., 300960.,
      436986., 437364., 437742., 438120., 438498., 438876., 439254., 439632.,
      440010., 440388., 440766., 441144., 441522., 441900., 442278., 442656.,
      285219., 285462., 285705., 285948., 286191., 286434., 286677., 286920.,
      312705., 312966., 313227., 313488., 455130., 455508., 455886., 456264.,
      456642., 457020., 457398., 457776., 458154., 458532., 458910., 459288.,
      459666., 460044., 460422., 460800., 296883., 297126., 297369., 297612.,
      297855., 298098., 298341., 298584., 181308., 181464., 181620., 181776.,
      263217., 263442., 263667., 263892., 264117., 264342., 264567., 264792.,
      265017., 265242., 265467., 265692., 265917., 266142., 266367., 266592.,
      171264., 171408., 171552., 171696., 171840., 171984., 172128., 172272.,
      188796., 188952., 189108., 189264., 274017., 274242., 274467., 274692.,
      274917., 275142., 275367., 275592., 275817., 276042., 276267., 276492.,
      276717., 276942., 277167., 277392., 178176., 178320., 178464., 178608.,
      178752., 178896., 179040., 179184.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      72750., 72828., 72906., 72984., 73062., 73140., 73218., 73296., 73374.,
      73452., 73530., 73608., 73686., 73764., 73842., 73920., 73998., 74076.,
      74154., 74232., 74310., 74388., 74466., 74544., 74622., 74700., 74778.,
      74856., 76494., 76572., 76650., 76728., 76806., 76884., 76962., 77040.,
      77118., 77196., 77274., 77352., 77430., 77508., 77586., 77664., 77742.,
      77820., 77898., 77976., 78054., 78132., 78210., 78288., 78366., 78444.,
      78522., 78600., 80238., 80316., 80394., 80472., 80550., 80628., 80706.,
      80784., 80862., 80940., 81018., 81096., 81174., 81252., 81330., 81408.,
      81486., 81564., 81642., 81720., 81798., 81876., 81954., 82032., 82110.,
      82188., 82266., 82344., 83982., 84060., 84138., 84216., 84294., 84372.,
      84450., 84528., 84606., 84684., 84762., 84840., 84918., 84996., 85074.,
      85152., 85230., 85308., 85386., 85464., 85542., 85620., 85698., 85776.,
      85854., 85932., 86010., 86088., 87726., 87804., 87882., 87960., 88038.,
      88116., 88194., 88272., 88350., 88428., 88506., 88584., 88662., 88740.,
      88818., 88896., 88974., 89052., 89130., 89208., 89286., 89364., 89442.,
      89520., 89598., 89676., 89754., 89832., 91470., 91548., 91626., 91704.,
      91782., 91860., 91938., 92016., 92094., 92172., 92250., 92328., 92406.,
      92484., 92562., 92640., 92718., 92796., 92874., 92952., 93030., 93108.,
      93186., 93264., 93342., 93420., 93498., 93576., 95214., 95292., 95370.,
      95448., 95526., 95604., 95682., 95760., 95838., 95916., 95994., 96072.,
      96150., 96228., 96306., 96384., 96462., 96540., 96618., 96696., 96774.,
      96852., 96930., 97008., 97086., 97164., 97242., 97320.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      397860., 407904., 398232., 408288., 398604., 408672., 398976., 409056.,
      579804., 594798., 580344., 595356., 580884., 595914., 581424., 596472.,
      581964., 597030., 582504., 597588., 583044., 598146., 583584., 598704.,
      584124., 599262., 584664., 599820., 585204., 600378., 585744., 600936.,
      586284., 601494., 586824., 602052., 587364., 602610., 587904., 603168.,
      379164., 389256., 379512., 389616., 379860., 389976., 380208., 390336.,
      380556., 390696., 380904., 391056., 381252., 391416., 381600., 391776.,
      536040., 550242., 536544., 550764., 537048., 551286., 537552., 551808.,
      780201., 801396., 780930., 802152., 781659., 802908., 782388., 803664.,
      783117., 804420., 783846., 805176., 784575., 805932., 785304., 806688.,
      786033., 807444., 786762., 808200., 787491., 808956., 788220., 809712.,
      788949., 810468., 789678., 811224., 790407., 811980., 791136., 812736.,
      509508., 523782., 509976., 524268., 510444., 524754., 510912., 525240.,
      511380., 525726., 511848., 526212., 512316., 526698., 512784., 527184.,
      560232., 575298., 560736., 575820., 561240., 576342., 561744., 576864.,
      815193., 837684., 815922., 838440., 816651., 839196., 817380., 839952.,
      818109., 840708., 818838., 841464., 819567., 842220., 820296., 842976.,
      821025., 843732., 821754., 844488., 822483., 845244., 823212., 846000.,
      823941., 846756., 824670., 847512., 825399., 848268., 826128., 849024.,
      531972., 547110., 532440., 547596., 532908., 548082., 533376., 548568.,
      533844., 549054., 534312., 549540., 534780., 550026., 535248., 550512.,
      584424., 600354., 584928., 600876., 585432., 601398., 585936., 601920.,
      850185., 873972., 850914., 874728., 851643., 875484., 852372., 876240.,
      853101., 876996., 853830., 877752., 854559., 878508., 855288., 879264.,
      856017., 880020., 856746., 880776., 857475., 881532., 858204., 882288.,
      858933., 883044., 859662., 883800., 860391., 884556., 861120., 885312.,
      554436., 570438., 554904., 570924., 555372., 571410., 555840., 571896.,
      556308., 572382., 556776., 572868., 557244., 573354., 557712., 573840.,
      608616., 625410., 609120., 625932., 609624., 626454., 610128., 626976.,
      885177., 910260., 885906., 911016., 886635., 911772., 887364., 912528.,
      888093., 913284., 888822., 914040., 889551., 914796., 890280., 915552.,
      891009., 916308., 891738., 917064., 892467., 917820., 893196., 918576.,
      893925., 919332., 894654., 920088., 895383., 920844., 896112., 921600.,
      576900., 593766., 577368., 594252., 577836., 594738., 578304., 595224.,
      578772., 595710., 579240., 596196., 579708., 596682., 580176., 597168.,
      351996., 362616., 352296., 362928., 352596., 363240., 352896., 363552.,
      510576., 526434., 511008., 526884., 511440., 527334., 511872., 527784.,
      512304., 528234., 512736., 528684., 513168., 529134., 513600., 529584.,
      514032., 530034., 514464., 530484., 514896., 530934., 515328., 531384.,
      515760., 531834., 516192., 532284., 516624., 532734., 517056., 533184.,
      331860., 342528., 332136., 342816., 332412., 343104., 332688., 343392.,
      332964., 343680., 333240., 343968., 333516., 344256., 333792., 344544.,
      366396., 377592., 366696., 377904., 366996., 378216., 367296., 378528.,
      531312., 548034., 531744., 548484., 532176., 548934., 532608., 549384.,
      533040., 549834., 533472., 550284., 533904., 550734., 534336., 551184.,
      534768., 551634., 535200., 552084., 535632., 552534., 536064., 552984.,
      536496., 553434., 536928., 553884., 537360., 554334., 537792., 554784.,
      345108., 356352., 345384., 356640., 345660., 356928., 345936., 357216.,
      346212., 357504., 346488., 357792., 346764., 358080., 347040., 358368.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      137328., 145500., 137472., 145656., 137616., 145812., 137760., 145968.,
      137904., 146124., 138048., 146280., 138192., 146436., 138336., 146592.,
      138480., 146748., 138624., 146904., 138768., 147060., 138912., 147216.,
      139056., 147372., 139200., 147528., 139344., 147684., 139488., 147840.,
      139632., 147996., 139776., 148152., 139920., 148308., 140064., 148464.,
      140208., 148620., 140352., 148776., 140496., 148932., 140640., 149088.,
      140784., 149244., 140928., 149400., 141072., 149556., 141216., 149712.,
      144240., 152988., 144384., 153144., 144528., 153300., 144672., 153456.,
      144816., 153612., 144960., 153768., 145104., 153924., 145248., 154080.,
      145392., 154236., 145536., 154392., 145680., 154548., 145824., 154704.,
      145968., 154860., 146112., 155016., 146256., 155172., 146400., 155328.,
      146544., 155484., 146688., 155640., 146832., 155796., 146976., 155952.,
      147120., 156108., 147264., 156264., 147408., 156420., 147552., 156576.,
      147696., 156732., 147840., 156888., 147984., 157044., 148128., 157200.,
      151152., 160476., 151296., 160632., 151440., 160788., 151584., 160944.,
      151728., 161100., 151872., 161256., 152016., 161412., 152160., 161568.,
      152304., 161724., 152448., 161880., 152592., 162036., 152736., 162192.,
      152880., 162348., 153024., 162504., 153168., 162660., 153312., 162816.,
      153456., 162972., 153600., 163128., 153744., 163284., 153888., 163440.,
      154032., 163596., 154176., 163752., 154320., 163908., 154464., 164064.,
      154608., 164220., 154752., 164376., 154896., 164532., 155040., 164688.,
      158064., 167964., 158208., 168120., 158352., 168276., 158496., 168432.,
      158640., 168588., 158784., 168744., 158928., 168900., 159072., 169056.,
      159216., 169212., 159360., 169368., 159504., 169524., 159648., 169680.,
      159792., 169836., 159936., 169992., 160080., 170148., 160224., 170304.,
      160368., 170460., 160512., 170616., 160656., 170772., 160800., 170928.,
      160944., 171084., 161088., 171240., 161232., 171396., 161376., 171552.,
      161520., 171708., 161664., 171864., 161808., 172020., 161952., 172176.,
      164976., 175452., 165120., 175608., 165264., 175764., 165408., 175920.,
      165552., 176076., 165696., 176232., 165840., 176388., 165984., 176544.,
      166128., 176700., 166272., 176856., 166416., 177012., 166560., 177168.,
      166704., 177324., 166848., 177480., 166992., 177636., 167136., 177792.,
      167280., 177948., 167424., 178104., 167568., 178260., 167712., 178416.,
      167856., 178572., 168000., 178728., 168144., 178884., 168288., 179040.,
      168432., 179196., 168576., 179352., 168720., 179508., 168864., 179664.,
      171888., 182940., 172032., 183096., 172176., 183252., 172320., 183408.,
      172464., 183564., 172608., 183720., 172752., 183876., 172896., 184032.,
      173040., 184188., 173184., 184344., 173328., 184500., 173472., 184656.,
      173616., 184812., 173760., 184968., 173904., 185124., 174048., 185280.,
      174192., 185436., 174336., 185592., 174480., 185748., 174624., 185904.,
      174768., 186060., 174912., 186216., 175056., 186372., 175200., 186528.,
      175344., 186684., 175488., 186840., 175632., 186996., 175776., 187152.,
      178800., 190428., 178944., 190584., 179088., 190740., 179232., 190896.,
      179376., 191052., 179520., 191208., 179664., 191364., 179808., 191520.,
      179952., 191676., 180096., 191832., 180240., 191988., 180384., 192144.,
      180528., 192300., 180672., 192456., 180816., 192612., 180960., 192768.,
      181104., 192924., 181248., 193080., 181392., 193236., 181536., 193392.,
      181680., 193548., 181824., 193704., 181968., 193860., 182112., 194016.,
      182256., 194172., 182400., 194328., 182544., 194484., 182688., 194640.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      785676.,  795720.,  805764.,  815808.,  786408.,  796464.,  806520.,
      816576.,  787140.,  797208.,  807276.,  817344.,  787872.,  797952.,
      808032.,  818112.,  1144614., 1159608., 1174602., 1189596., 1145676.,
      1160688., 1175700., 1190712., 1146738., 1161768., 1176798., 1191828.,
      1147800., 1162848., 1177896., 1192944., 1148862., 1163928., 1178994.,
      1194060., 1149924., 1165008., 1180092., 1195176., 1150986., 1166088.,
      1181190., 1196292., 1152048., 1167168., 1182288., 1197408., 1153110.,
      1168248., 1183386., 1198524., 1154172., 1169328., 1184484., 1199640.,
      1155234., 1170408., 1185582., 1200756., 1156296., 1171488., 1186680.,
      1201872., 1157358., 1172568., 1187778., 1202988., 1158420., 1173648.,
      1188876., 1204104., 1159482., 1174728., 1189974., 1205220., 1160544.,
      1175808., 1191072., 1206336., 748236.,  758328.,  768420.,  778512.,
      748920.,  759024.,  769128.,  779232.,  749604.,  759720.,  769836.,
      779952.,  750288.,  760416.,  770544.,  780672.,  750972.,  761112.,
      771252.,  781392.,  751656.,  761808.,  771960.,  782112.,  752340.,
      762504.,  772668.,  782832.,  753024.,  763200.,  773376.,  783552.,
      1057878., 1072080., 1086282., 1100484., 1058868., 1073088., 1087308.,
      1101528., 1059858., 1074096., 1088334., 1102572., 1060848., 1075104.,
      1089360., 1103616., 1539207., 1560402., 1581597., 1602792., 1540638.,
      1561860., 1583082., 1604304., 1542069., 1563318., 1584567., 1605816.,
      1543500., 1564776., 1586052., 1607328., 1544931., 1566234., 1587537.,
      1608840., 1546362., 1567692., 1589022., 1610352., 1547793., 1569150.,
      1590507., 1611864., 1549224., 1570608., 1591992., 1613376., 1550655.,
      1572066., 1593477., 1614888., 1552086., 1573524., 1594962., 1616400.,
      1553517., 1574982., 1596447., 1617912., 1554948., 1576440., 1597932.,
      1619424., 1556379., 1577898., 1599417., 1620936., 1557810., 1579356.,
      1600902., 1622448., 1559241., 1580814., 1602387., 1623960., 1560672.,
      1582272., 1603872., 1625472., 1004742., 1019016., 1033290., 1047564.,
      1005660., 1019952., 1034244., 1048536., 1006578., 1020888., 1035198.,
      1049508., 1007496., 1021824., 1036152., 1050480., 1008414., 1022760.,
      1037106., 1051452., 1009332., 1023696., 1038060., 1052424., 1010250.,
      1024632., 1039014., 1053396., 1011168., 1025568., 1039968., 1054368.,
      1105398., 1120464., 1135530., 1150596., 1106388., 1121472., 1136556.,
      1151640., 1107378., 1122480., 1137582., 1152684., 1108368., 1123488.,
      1138608., 1153728., 1607895., 1630386., 1652877., 1675368., 1609326.,
      1631844., 1654362., 1676880., 1610757., 1633302., 1655847., 1678392.,
      1612188., 1634760., 1657332., 1679904., 1613619., 1636218., 1658817.,
      1681416., 1615050., 1637676., 1660302., 1682928., 1616481., 1639134.,
      1661787., 1684440., 1617912., 1640592., 1663272., 1685952., 1619343.,
      1642050., 1664757., 1687464., 1620774., 1643508., 1666242., 1688976.,
      1622205., 1644966., 1667727., 1690488., 1623636., 1646424., 1669212.,
      1692000., 1625067., 1647882., 1670697., 1693512., 1626498., 1649340.,
      1672182., 1695024., 1627929., 1650798., 1673667., 1696536., 1629360.,
      1652256., 1675152., 1698048., 1048806., 1063944., 1079082., 1094220.,
      1049724., 1064880., 1080036., 1095192., 1050642., 1065816., 1080990.,
      1096164., 1051560., 1066752., 1081944., 1097136., 1052478., 1067688.,
      1082898., 1098108., 1053396., 1068624., 1083852., 1099080., 1054314.,
      1069560., 1084806., 1100052., 1055232., 1070496., 1085760., 1101024.,
      1152918., 1168848., 1184778., 1200708., 1153908., 1169856., 1185804.,
      1201752., 1154898., 1170864., 1186830., 1202796., 1155888., 1171872.,
      1187856., 1203840., 1676583., 1700370., 1724157., 1747944., 1678014.,
      1701828., 1725642., 1749456., 1679445., 1703286., 1727127., 1750968.,
      1680876., 1704744., 1728612., 1752480., 1682307., 1706202., 1730097.,
      1753992., 1683738., 1707660., 1731582., 1755504., 1685169., 1709118.,
      1733067., 1757016., 1686600., 1710576., 1734552., 1758528., 1688031.,
      1712034., 1736037., 1760040., 1689462., 1713492., 1737522., 1761552.,
      1690893., 1714950., 1739007., 1763064., 1692324., 1716408., 1740492.,
      1764576., 1693755., 1717866., 1741977., 1766088., 1695186., 1719324.,
      1743462., 1767600., 1696617., 1720782., 1744947., 1769112., 1698048.,
      1722240., 1746432., 1770624., 1092870., 1108872., 1124874., 1140876.,
      1093788., 1109808., 1125828., 1141848., 1094706., 1110744., 1126782.,
      1142820., 1095624., 1111680., 1127736., 1143792., 1096542., 1112616.,
      1128690., 1144764., 1097460., 1113552., 1129644., 1145736., 1098378.,
      1114488., 1130598., 1146708., 1099296., 1115424., 1131552., 1147680.,
      1200438., 1217232., 1234026., 1250820., 1201428., 1218240., 1235052.,
      1251864., 1202418., 1219248., 1236078., 1252908., 1203408., 1220256.,
      1237104., 1253952., 1745271., 1770354., 1795437., 1820520., 1746702.,
      1771812., 1796922., 1822032., 1748133., 1773270., 1798407., 1823544.,
      1749564., 1774728., 1799892., 1825056., 1750995., 1776186., 1801377.,
      1826568., 1752426., 1777644., 1802862., 1828080., 1753857., 1779102.,
      1804347., 1829592., 1755288., 1780560., 1805832., 1831104., 1756719.,
      1782018., 1807317., 1832616., 1758150., 1783476., 1808802., 1834128.,
      1759581., 1784934., 1810287., 1835640., 1761012., 1786392., 1811772.,
      1837152., 1762443., 1787850., 1813257., 1838664., 1763874., 1789308.,
      1814742., 1840176., 1765305., 1790766., 1816227., 1841688., 1766736.,
      1792224., 1817712., 1843200., 1136934., 1153800., 1170666., 1187532.,
      1137852., 1154736., 1171620., 1188504., 1138770., 1155672., 1172574.,
      1189476., 1139688., 1156608., 1173528., 1190448., 1140606., 1157544.,
      1174482., 1191420., 1141524., 1158480., 1175436., 1192392., 1142442.,
      1159416., 1176390., 1193364., 1143360., 1160352., 1177344., 1194336.,
      693372.,  703992.,  714612.,  725232.,  693960.,  704592.,  715224.,
      725856.,  694548.,  705192.,  715836.,  726480.,  695136.,  705792.,
      716448.,  727104.,  1005294., 1021152., 1037010., 1052868., 1006140.,
      1022016., 1037892., 1053768., 1006986., 1022880., 1038774., 1054668.,
      1007832., 1023744., 1039656., 1055568., 1008678., 1024608., 1040538.,
      1056468., 1009524., 1025472., 1041420., 1057368., 1010370., 1026336.,
      1042302., 1058268., 1011216., 1027200., 1043184., 1059168., 1012062.,
      1028064., 1044066., 1060068., 1012908., 1028928., 1044948., 1060968.,
      1013754., 1029792., 1045830., 1061868., 1014600., 1030656., 1046712.,
      1062768., 1015446., 1031520., 1047594., 1063668., 1016292., 1032384.,
      1048476., 1064568., 1017138., 1033248., 1049358., 1065468., 1017984.,
      1034112., 1050240., 1066368., 653052.,  663720.,  674388.,  685056.,
      653592.,  664272.,  674952.,  685632.,  654132.,  664824.,  675516.,
      686208.,  654672.,  665376.,  676080.,  686784.,  655212.,  665928.,
      676644.,  687360.,  655752.,  666480.,  677208.,  687936.,  656292.,
      667032.,  677772.,  688512.,  656832.,  667584.,  678336.,  689088.,
      721596.,  732792.,  743988.,  755184.,  722184.,  733392.,  744600.,
      755808.,  722772.,  733992.,  745212.,  756432.,  723360.,  734592.,
      745824.,  757056.,  1045902., 1062624., 1079346., 1096068., 1046748.,
      1063488., 1080228., 1096968., 1047594., 1064352., 1081110., 1097868.,
      1048440., 1065216., 1081992., 1098768., 1049286., 1066080., 1082874.,
      1099668., 1050132., 1066944., 1083756., 1100568., 1050978., 1067808.,
      1084638., 1101468., 1051824., 1068672., 1085520., 1102368., 1052670.,
      1069536., 1086402., 1103268., 1053516., 1070400., 1087284., 1104168.,
      1054362., 1071264., 1088166., 1105068., 1055208., 1072128., 1089048.,
      1105968., 1056054., 1072992., 1089930., 1106868., 1056900., 1073856.,
      1090812., 1107768., 1057746., 1074720., 1091694., 1108668., 1058592.,
      1075584., 1092576., 1109568., 678972.,  690216.,  701460.,  712704.,
      679512.,  690768.,  702024.,  713280.,  680052.,  691320.,  702588.,
      713856.,  680592.,  691872.,  703152.,  714432.,  681132.,  692424.,
      703716.,  715008.,  681672.,  692976.,  704280.,  715584.,  682212.,
      693528.,  704844.,  716160.,  682752.,  694080.,  705408.,  716736.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      266484., 274656., 282828., 291000., 266760., 274944., 283128., 291312.,
      267036., 275232., 283428., 291624., 267312., 275520., 283728., 291936.,
      267588., 275808., 284028., 292248., 267864., 276096., 284328., 292560.,
      268140., 276384., 284628., 292872., 268416., 276672., 284928., 293184.,
      268692., 276960., 285228., 293496., 268968., 277248., 285528., 293808.,
      269244., 277536., 285828., 294120., 269520., 277824., 286128., 294432.,
      269796., 278112., 286428., 294744., 270072., 278400., 286728., 295056.,
      270348., 278688., 287028., 295368., 270624., 278976., 287328., 295680.,
      270900., 279264., 287628., 295992., 271176., 279552., 287928., 296304.,
      271452., 279840., 288228., 296616., 271728., 280128., 288528., 296928.,
      272004., 280416., 288828., 297240., 272280., 280704., 289128., 297552.,
      272556., 280992., 289428., 297864., 272832., 281280., 289728., 298176.,
      273108., 281568., 290028., 298488., 273384., 281856., 290328., 298800.,
      273660., 282144., 290628., 299112., 273936., 282432., 290928., 299424.,
      279732., 288480., 297228., 305976., 280008., 288768., 297528., 306288.,
      280284., 289056., 297828., 306600., 280560., 289344., 298128., 306912.,
      280836., 289632., 298428., 307224., 281112., 289920., 298728., 307536.,
      281388., 290208., 299028., 307848., 281664., 290496., 299328., 308160.,
      281940., 290784., 299628., 308472., 282216., 291072., 299928., 308784.,
      282492., 291360., 300228., 309096., 282768., 291648., 300528., 309408.,
      283044., 291936., 300828., 309720., 283320., 292224., 301128., 310032.,
      283596., 292512., 301428., 310344., 283872., 292800., 301728., 310656.,
      284148., 293088., 302028., 310968., 284424., 293376., 302328., 311280.,
      284700., 293664., 302628., 311592., 284976., 293952., 302928., 311904.,
      285252., 294240., 303228., 312216., 285528., 294528., 303528., 312528.,
      285804., 294816., 303828., 312840., 286080., 295104., 304128., 313152.,
      286356., 295392., 304428., 313464., 286632., 295680., 304728., 313776.,
      286908., 295968., 305028., 314088., 287184., 296256., 305328., 314400.,
      292980., 302304., 311628., 320952., 293256., 302592., 311928., 321264.,
      293532., 302880., 312228., 321576., 293808., 303168., 312528., 321888.,
      294084., 303456., 312828., 322200., 294360., 303744., 313128., 322512.,
      294636., 304032., 313428., 322824., 294912., 304320., 313728., 323136.,
      295188., 304608., 314028., 323448., 295464., 304896., 314328., 323760.,
      295740., 305184., 314628., 324072., 296016., 305472., 314928., 324384.,
      296292., 305760., 315228., 324696., 296568., 306048., 315528., 325008.,
      296844., 306336., 315828., 325320., 297120., 306624., 316128., 325632.,
      297396., 306912., 316428., 325944., 297672., 307200., 316728., 326256.,
      297948., 307488., 317028., 326568., 298224., 307776., 317328., 326880.,
      298500., 308064., 317628., 327192., 298776., 308352., 317928., 327504.,
      299052., 308640., 318228., 327816., 299328., 308928., 318528., 328128.,
      299604., 309216., 318828., 328440., 299880., 309504., 319128., 328752.,
      300156., 309792., 319428., 329064., 300432., 310080., 319728., 329376.,
      306228., 316128., 326028., 335928., 306504., 316416., 326328., 336240.,
      306780., 316704., 326628., 336552., 307056., 316992., 326928., 336864.,
      307332., 317280., 327228., 337176., 307608., 317568., 327528., 337488.,
      307884., 317856., 327828., 337800., 308160., 318144., 328128., 338112.,
      308436., 318432., 328428., 338424., 308712., 318720., 328728., 338736.,
      308988., 319008., 329028., 339048., 309264., 319296., 329328., 339360.,
      309540., 319584., 329628., 339672., 309816., 319872., 329928., 339984.,
      310092., 320160., 330228., 340296., 310368., 320448., 330528., 340608.,
      310644., 320736., 330828., 340920., 310920., 321024., 331128., 341232.,
      311196., 321312., 331428., 341544., 311472., 321600., 331728., 341856.,
      311748., 321888., 332028., 342168., 312024., 322176., 332328., 342480.,
      312300., 322464., 332628., 342792., 312576., 322752., 332928., 343104.,
      312852., 323040., 333228., 343416., 313128., 323328., 333528., 343728.,
      313404., 323616., 333828., 344040., 313680., 323904., 334128., 344352.,
      319476., 329952., 340428., 350904., 319752., 330240., 340728., 351216.,
      320028., 330528., 341028., 351528., 320304., 330816., 341328., 351840.,
      320580., 331104., 341628., 352152., 320856., 331392., 341928., 352464.,
      321132., 331680., 342228., 352776., 321408., 331968., 342528., 353088.,
      321684., 332256., 342828., 353400., 321960., 332544., 343128., 353712.,
      322236., 332832., 343428., 354024., 322512., 333120., 343728., 354336.,
      322788., 333408., 344028., 354648., 323064., 333696., 344328., 354960.,
      323340., 333984., 344628., 355272., 323616., 334272., 344928., 355584.,
      323892., 334560., 345228., 355896., 324168., 334848., 345528., 356208.,
      324444., 335136., 345828., 356520., 324720., 335424., 346128., 356832.,
      324996., 335712., 346428., 357144., 325272., 336000., 346728., 357456.,
      325548., 336288., 347028., 357768., 325824., 336576., 347328., 358080.,
      326100., 336864., 347628., 358392., 326376., 337152., 347928., 358704.,
      326652., 337440., 348228., 359016., 326928., 337728., 348528., 359328.,
      332724., 343776., 354828., 365880., 333000., 344064., 355128., 366192.,
      333276., 344352., 355428., 366504., 333552., 344640., 355728., 366816.,
      333828., 344928., 356028., 367128., 334104., 345216., 356328., 367440.,
      334380., 345504., 356628., 367752., 334656., 345792., 356928., 368064.,
      334932., 346080., 357228., 368376., 335208., 346368., 357528., 368688.,
      335484., 346656., 357828., 369000., 335760., 346944., 358128., 369312.,
      336036., 347232., 358428., 369624., 336312., 347520., 358728., 369936.,
      336588., 347808., 359028., 370248., 336864., 348096., 359328., 370560.,
      337140., 348384., 359628., 370872., 337416., 348672., 359928., 371184.,
      337692., 348960., 360228., 371496., 337968., 349248., 360528., 371808.,
      338244., 349536., 360828., 372120., 338520., 349824., 361128., 372432.,
      338796., 350112., 361428., 372744., 339072., 350400., 361728., 373056.,
      339348., 350688., 362028., 373368., 339624., 350976., 362328., 373680.,
      339900., 351264., 362628., 373992., 340176., 351552., 362928., 374304.,
      345972., 357600., 369228., 380856., 346248., 357888., 369528., 381168.,
      346524., 358176., 369828., 381480., 346800., 358464., 370128., 381792.,
      347076., 358752., 370428., 382104., 347352., 359040., 370728., 382416.,
      347628., 359328., 371028., 382728., 347904., 359616., 371328., 383040.,
      348180., 359904., 371628., 383352., 348456., 360192., 371928., 383664.,
      348732., 360480., 372228., 383976., 349008., 360768., 372528., 384288.,
      349284., 361056., 372828., 384600., 349560., 361344., 373128., 384912.,
      349836., 361632., 373428., 385224., 350112., 361920., 373728., 385536.,
      350388., 362208., 374028., 385848., 350664., 362496., 374328., 386160.,
      350940., 362784., 374628., 386472., 351216., 363072., 374928., 386784.,
      351492., 363360., 375228., 387096., 351768., 363648., 375528., 387408.,
      352044., 363936., 375828., 387720., 352320., 364224., 376128., 388032.,
      352596., 364512., 376428., 388344., 352872., 364800., 376728., 388656.,
      353148., 365088., 377028., 388968., 353424., 365376., 377328., 389280.};
  const std::array<int, 4> in_shape = {{3, 12, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      117858., 118236., 154260., 154752., 113448., 113808., 114168.,
      158895., 159408., 207786., 208452., 152658., 153144., 153630.,
      166077., 166590., 217110., 217776., 159462., 159948., 160434.,
      173259., 173772., 226434., 227100., 166266., 166752., 167238.,
      180441., 180954., 235758., 236424., 173070., 173556., 174042.,
      104502., 104808., 136284., 136680., 99840.,  100128., 100416.,
      108786., 109092., 141828., 142224., 103872., 104160., 104448.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      21246., 21324., 21402., 21480., 21558., 21636., 21714., 22338., 22416.,
      22494., 22572., 22650., 22728., 22806., 23430., 23508., 23586., 23664.,
      23742., 23820., 23898., 24522., 24600., 24678., 24756., 24834., 24912.,
      24990., 25614., 25692., 25770., 25848., 25926., 26004., 26082., 26706.,
      26784., 26862., 26940., 27018., 27096., 27174., 27798., 27876., 27954.,
      28032., 28110., 28188., 28266.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      231306., 235716., 232044., 236472., 302640., 308520., 303600., 309504.,
      222486., 226896., 223188., 227616., 223890., 228336., 311553., 317790.,
      312552., 318816., 407256., 415572., 408552., 416904., 299079., 305316.,
      300024., 306288., 300969., 307260., 325539., 332154., 326538., 333180.,
      425400., 434220., 426696., 435552., 312309., 318924., 313254., 319896.,
      314199., 320868., 339525., 346518., 340524., 347544., 443544., 452868.,
      444840., 454200., 325539., 332532., 326484., 333504., 327429., 334476.,
      353511., 360882., 354510., 361908., 461688., 471516., 462984., 472848.,
      338769., 346140., 339714., 347112., 340659., 348084., 204342., 209004.,
      204936., 209616., 266352., 272568., 267120., 273360., 195018., 199680.,
      195576., 200256., 196134., 200832., 212658., 217572., 213252., 218184.,
      277104., 283656., 277872., 284448., 202830., 207744., 203388., 208320.,
      203946., 208896.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      40104., 42492., 40248., 42648., 40392., 42804., 40536., 42960., 40680.,
      43116., 40824., 43272., 40968., 43428., 42120., 44676., 42264., 44832.,
      42408., 44988., 42552., 45144., 42696., 45300., 42840., 45456., 42984.,
      45612., 44136., 46860., 44280., 47016., 44424., 47172., 44568., 47328.,
      44712., 47484., 44856., 47640., 45000., 47796., 46152., 49044., 46296.,
      49200., 46440., 49356., 46584., 49512., 46728., 49668., 46872., 49824.,
      47016., 49980., 48168., 51228., 48312., 51384., 48456., 51540., 48600.,
      51696., 48744., 51852., 48888., 52008., 49032., 52164., 50184., 53412.,
      50328., 53568., 50472., 53724., 50616., 53880., 50760., 54036., 50904.,
      54192., 51048., 54348., 52200., 55596., 52344., 55752., 52488., 55908.,
      52632., 56064., 52776., 56220., 52920., 56376., 53064., 56532.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      458202., 462612., 467022., 471432., 459660., 464088., 468516., 472944.,
      599400., 605280., 611160., 617040., 601296., 607200., 613104., 619008.,
      440562., 444972., 449382., 453792., 441948., 446376., 450804., 455232.,
      443334., 447780., 452226., 456672., 616869., 623106., 629343., 635580.,
      618840., 625104., 631368., 637632., 806196., 814512., 822828., 831144.,
      808752., 817104., 825456., 833808., 591921., 598158., 604395., 610632.,
      593784., 600048., 606312., 612576., 595647., 601938., 608229., 614520.,
      644463., 651078., 657693., 664308., 646434., 653076., 659718., 666360.,
      841980., 850800., 859620., 868440., 844536., 853392., 862248., 871104.,
      618003., 624618., 631233., 637848., 619866., 626508., 633150., 639792.,
      621729., 628398., 635067., 641736., 672057., 679050., 686043., 693036.,
      674028., 681048., 688068., 695088., 877764., 887088., 896412., 905736.,
      880320., 889680., 899040., 908400., 644085., 651078., 658071., 665064.,
      645948., 652968., 659988., 667008., 647811., 654858., 661905., 668952.,
      699651., 707022., 714393., 721764., 701622., 709020., 716418., 723816.,
      913548., 923376., 933204., 943032., 916104., 925968., 935832., 945696.,
      670167., 677538., 684909., 692280., 672030., 679428., 686826., 694224.,
      673893., 681318., 688743., 696168., 404022., 408684., 413346., 418008.,
      405192., 409872., 414552., 419232., 526488., 532704., 538920., 545136.,
      528000., 534240., 540480., 546720., 385374., 390036., 394698., 399360.,
      386472., 391152., 395832., 400512., 387570., 392268., 396966., 401664.,
      420402., 425316., 430230., 435144., 421572., 426504., 431436., 436368.,
      547656., 554208., 560760., 567312., 549168., 555744., 562320., 568896.,
      400746., 405660., 410574., 415488., 401844., 406776., 411708., 416640.,
      402942., 407892., 412842., 417792.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77820.,  80208.,  82596.,  84984.,  78096.,  80496.,  82896.,  85296.,
      78372.,  80784.,  83196.,  85608.,  78648.,  81072.,  83496.,  85920.,
      78924.,  81360.,  83796.,  86232.,  79200.,  81648.,  84096.,  86544.,
      79476.,  81936.,  84396.,  86856.,  81684.,  84240.,  86796.,  89352.,
      81960.,  84528.,  87096.,  89664.,  82236.,  84816.,  87396.,  89976.,
      82512.,  85104.,  87696.,  90288.,  82788.,  85392.,  87996.,  90600.,
      83064.,  85680.,  88296.,  90912.,  83340.,  85968.,  88596.,  91224.,
      85548.,  88272.,  90996.,  93720.,  85824.,  88560.,  91296.,  94032.,
      86100.,  88848.,  91596.,  94344.,  86376.,  89136.,  91896.,  94656.,
      86652.,  89424.,  92196.,  94968.,  86928.,  89712.,  92496.,  95280.,
      87204.,  90000.,  92796.,  95592.,  89412.,  92304.,  95196.,  98088.,
      89688.,  92592.,  95496.,  98400.,  89964.,  92880.,  95796.,  98712.,
      90240.,  93168.,  96096.,  99024.,  90516.,  93456.,  96396.,  99336.,
      90792.,  93744.,  96696.,  99648.,  91068.,  94032.,  96996.,  99960.,
      93276.,  96336.,  99396.,  102456., 93552.,  96624.,  99696.,  102768.,
      93828.,  96912.,  99996.,  103080., 94104.,  97200.,  100296., 103392.,
      94380.,  97488.,  100596., 103704., 94656.,  97776.,  100896., 104016.,
      94932.,  98064.,  101196., 104328., 97140.,  100368., 103596., 106824.,
      97416.,  100656., 103896., 107136., 97692.,  100944., 104196., 107448.,
      97968.,  101232., 104496., 107760., 98244.,  101520., 104796., 108072.,
      98520.,  101808., 105096., 108384., 98796.,  102096., 105396., 108696.,
      101004., 104400., 107796., 111192., 101280., 104688., 108096., 111504.,
      101556., 104976., 108396., 111816., 101832., 105264., 108696., 112128.,
      102108., 105552., 108996., 112440., 102384., 105840., 109296., 112752.,
      102660., 106128., 109596., 113064.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      235338., 235716., 236094., 236472., 308028., 308520., 309012., 309504.,
      226536., 226896., 227256., 227616., 227976., 228336., 317277., 317790.,
      318303., 318816., 414906., 415572., 416238., 416904., 304830., 305316.,
      305802., 306288., 306774., 307260., 331641., 332154., 332667., 333180.,
      433554., 434220., 434886., 435552., 318438., 318924., 319410., 319896.,
      320382., 320868., 346005., 346518., 347031., 347544., 452202., 452868.,
      453534., 454200., 332046., 332532., 333018., 333504., 333990., 334476.,
      360369., 360882., 361395., 361908., 470850., 471516., 472182., 472848.,
      345654., 346140., 346626., 347112., 347598., 348084., 208698., 209004.,
      209310., 209616., 272172., 272568., 272964., 273360., 199392., 199680.,
      199968., 200256., 200544., 200832., 217266., 217572., 217878., 218184.,
      283260., 283656., 284052., 284448., 207456., 207744., 208032., 208320.,
      208608., 208896.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      42414., 42492., 42570., 42648., 42726., 42804., 42882., 42960., 43038.,
      43116., 43194., 43272., 43350., 43428., 44598., 44676., 44754., 44832.,
      44910., 44988., 45066., 45144., 45222., 45300., 45378., 45456., 45534.,
      45612., 46782., 46860., 46938., 47016., 47094., 47172., 47250., 47328.,
      47406., 47484., 47562., 47640., 47718., 47796., 48966., 49044., 49122.,
      49200., 49278., 49356., 49434., 49512., 49590., 49668., 49746., 49824.,
      49902., 49980., 51150., 51228., 51306., 51384., 51462., 51540., 51618.,
      51696., 51774., 51852., 51930., 52008., 52086., 52164., 53334., 53412.,
      53490., 53568., 53646., 53724., 53802., 53880., 53958., 54036., 54114.,
      54192., 54270., 54348., 55518., 55596., 55674., 55752., 55830., 55908.,
      55986., 56064., 56142., 56220., 56298., 56376., 56454., 56532.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      461874., 470676., 462612., 471432., 463350., 472188., 464088., 472944.,
      604320., 616056., 605280., 617040., 606240., 618024., 607200., 619008.,
      444270., 453072., 444972., 453792., 445674., 454512., 446376., 455232.,
      447078., 455952., 447780., 456672., 622107., 634554., 623106., 635580.,
      624105., 636606., 625104., 637632., 813216., 829812., 814512., 831144.,
      815808., 832476., 817104., 833808., 597213., 609660., 598158., 610632.,
      599103., 611604., 600048., 612576., 600993., 613548., 601938., 614520.,
      650079., 663282., 651078., 664308., 652077., 665334., 653076., 666360.,
      849504., 867108., 850800., 868440., 852096., 869772., 853392., 871104.,
      623673., 636876., 624618., 637848., 625563., 638820., 626508., 639792.,
      627453., 640764., 628398., 641736., 678051., 692010., 679050., 693036.,
      680049., 694062., 681048., 695088., 885792., 904404., 887088., 905736.,
      888384., 907068., 889680., 908400., 650133., 664092., 651078., 665064.,
      652023., 666036., 652968., 667008., 653913., 667980., 654858., 668952.,
      706023., 720738., 707022., 721764., 708021., 722790., 709020., 723816.,
      922080., 941700., 923376., 943032., 924672., 944364., 925968., 945696.,
      676593., 691308., 677538., 692280., 678483., 693252., 679428., 694224.,
      680373., 695196., 681318., 696168., 408090., 417396., 408684., 418008.,
      409278., 418620., 409872., 419232., 531936., 544344., 532704., 545136.,
      533472., 545928., 534240., 546720., 389478., 398784., 390036., 399360.,
      390594., 399936., 391152., 400512., 391710., 401088., 392268., 401664.,
      424722., 434532., 425316., 435144., 425910., 435756., 426504., 436368.,
      553440., 566520., 554208., 567312., 554976., 568104., 555744., 568896.,
      405102., 414912., 405660., 415488., 406218., 416064., 406776., 416640.,
      407334., 417216., 407892., 417792.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      80064.,  84828.,  80208.,  84984.,  80352.,  85140.,  80496.,  85296.,
      80640.,  85452.,  80784.,  85608.,  80928.,  85764.,  81072.,  85920.,
      81216.,  86076.,  81360.,  86232.,  81504.,  86388.,  81648.,  86544.,
      81792.,  86700.,  81936.,  86856.,  84096.,  89196.,  84240.,  89352.,
      84384.,  89508.,  84528.,  89664.,  84672.,  89820.,  84816.,  89976.,
      84960.,  90132.,  85104.,  90288.,  85248.,  90444.,  85392.,  90600.,
      85536.,  90756.,  85680.,  90912.,  85824.,  91068.,  85968.,  91224.,
      88128.,  93564.,  88272.,  93720.,  88416.,  93876.,  88560.,  94032.,
      88704.,  94188.,  88848.,  94344.,  88992.,  94500.,  89136.,  94656.,
      89280.,  94812.,  89424.,  94968.,  89568.,  95124.,  89712.,  95280.,
      89856.,  95436.,  90000.,  95592.,  92160.,  97932.,  92304.,  98088.,
      92448.,  98244.,  92592.,  98400.,  92736.,  98556.,  92880.,  98712.,
      93024.,  98868.,  93168.,  99024.,  93312.,  99180.,  93456.,  99336.,
      93600.,  99492.,  93744.,  99648.,  93888.,  99804.,  94032.,  99960.,
      96192.,  102300., 96336.,  102456., 96480.,  102612., 96624.,  102768.,
      96768.,  102924., 96912.,  103080., 97056.,  103236., 97200.,  103392.,
      97344.,  103548., 97488.,  103704., 97632.,  103860., 97776.,  104016.,
      97920.,  104172., 98064.,  104328., 100224., 106668., 100368., 106824.,
      100512., 106980., 100656., 107136., 100800., 107292., 100944., 107448.,
      101088., 107604., 101232., 107760., 101376., 107916., 101520., 108072.,
      101664., 108228., 101808., 108384., 101952., 108540., 102096., 108696.,
      104256., 111036., 104400., 111192., 104544., 111348., 104688., 111504.,
      104832., 111660., 104976., 111816., 105120., 111972., 105264., 112128.,
      105408., 112284., 105552., 112440., 105696., 112596., 105840., 112752.,
      105984., 112908., 106128., 113064.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      914946.,  923748.,  932550.,  941352.,  916404.,  925224.,  934044.,
      942864.,  917862.,  926700.,  935538.,  944376.,  919320.,  928176.,
      937032.,  945888.,  1196904., 1208640., 1220376., 1232112., 1198800.,
      1210560., 1222320., 1234080., 1200696., 1212480., 1224264., 1236048.,
      1202592., 1214400., 1226208., 1238016., 879738.,  888540.,  897342.,
      906144.,  881124.,  889944.,  898764.,  907584.,  882510.,  891348.,
      900186.,  909024.,  883896.,  892752.,  901608.,  910464.,  885282.,
      894156.,  903030.,  911904.,  886668.,  895560.,  904452.,  913344.,
      1231767., 1244214., 1256661., 1269108., 1233738., 1246212., 1258686.,
      1271160., 1235709., 1248210., 1260711., 1273212., 1237680., 1250208.,
      1262736., 1275264., 1609836., 1626432., 1643028., 1659624., 1612392.,
      1629024., 1645656., 1662288., 1614948., 1631616., 1648284., 1664952.,
      1617504., 1634208., 1650912., 1667616., 1181979., 1194426., 1206873.,
      1219320., 1183842., 1196316., 1208790., 1221264., 1185705., 1198206.,
      1210707., 1223208., 1187568., 1200096., 1212624., 1225152., 1189431.,
      1201986., 1214541., 1227096., 1191294., 1203876., 1216458., 1229040.,
      1286955., 1300158., 1313361., 1326564., 1288926., 1302156., 1315386.,
      1328616., 1290897., 1304154., 1317411., 1330668., 1292868., 1306152.,
      1319436., 1332720., 1681404., 1699008., 1716612., 1734216., 1683960.,
      1701600., 1719240., 1736880., 1686516., 1704192., 1721868., 1739544.,
      1689072., 1706784., 1724496., 1742208., 1234143., 1247346., 1260549.,
      1273752., 1236006., 1249236., 1262466., 1275696., 1237869., 1251126.,
      1264383., 1277640., 1239732., 1253016., 1266300., 1279584., 1241595.,
      1254906., 1268217., 1281528., 1243458., 1256796., 1270134., 1283472.,
      1342143., 1356102., 1370061., 1384020., 1344114., 1358100., 1372086.,
      1386072., 1346085., 1360098., 1374111., 1388124., 1348056., 1362096.,
      1376136., 1390176., 1752972., 1771584., 1790196., 1808808., 1755528.,
      1774176., 1792824., 1811472., 1758084., 1776768., 1795452., 1814136.,
      1760640., 1779360., 1798080., 1816800., 1286307., 1300266., 1314225.,
      1328184., 1288170., 1302156., 1316142., 1330128., 1290033., 1304046.,
      1318059., 1332072., 1291896., 1305936., 1319976., 1334016., 1293759.,
      1307826., 1321893., 1335960., 1295622., 1309716., 1323810., 1337904.,
      1397331., 1412046., 1426761., 1441476., 1399302., 1414044., 1428786.,
      1443528., 1401273., 1416042., 1430811., 1445580., 1403244., 1418040.,
      1432836., 1447632., 1824540., 1844160., 1863780., 1883400., 1827096.,
      1846752., 1866408., 1886064., 1829652., 1849344., 1869036., 1888728.,
      1832208., 1851936., 1871664., 1891392., 1338471., 1353186., 1367901.,
      1382616., 1340334., 1355076., 1369818., 1384560., 1342197., 1356966.,
      1371735., 1386504., 1344060., 1358856., 1373652., 1388448., 1345923.,
      1360746., 1375569., 1390392., 1347786., 1362636., 1377486., 1392336.,
      806874.,  816180.,  825486.,  834792.,  808044.,  817368.,  826692.,
      836016.,  809214.,  818556.,  827898.,  837240.,  810384.,  819744.,
      829104.,  838464.,  1051464., 1063872., 1076280., 1088688., 1052976.,
      1065408., 1077840., 1090272., 1054488., 1066944., 1079400., 1091856.,
      1056000., 1068480., 1080960., 1093440., 769650.,  778956.,  788262.,
      797568.,  770748.,  780072.,  789396.,  798720.,  771846.,  781188.,
      790530.,  799872.,  772944.,  782304.,  791664.,  801024.,  774042.,
      783420.,  792798.,  802176.,  775140.,  784536.,  793932.,  803328.,
      839634.,  849444.,  859254.,  869064.,  840804.,  850632.,  860460.,
      870288.,  841974.,  851820.,  861666.,  871512.,  843144.,  853008.,
      862872.,  872736.,  1093800., 1106880., 1119960., 1133040., 1095312.,
      1108416., 1121520., 1134624., 1096824., 1109952., 1123080., 1136208.,
      1098336., 1111488., 1124640., 1137792., 800394.,  810204.,  820014.,
      829824.,  801492.,  811320.,  821148.,  830976.,  802590.,  812436.,
      822282.,  832128.,  803688.,  813552.,  823416.,  833280.,  804786.,
      814668.,  824550.,  834432.,  805884.,  815784.,  825684.,  835584.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      155364., 160128., 164892., 169656., 155640., 160416., 165192., 169968.,
      155916., 160704., 165492., 170280., 156192., 160992., 165792., 170592.,
      156468., 161280., 166092., 170904., 156744., 161568., 166392., 171216.,
      157020., 161856., 166692., 171528., 157296., 162144., 166992., 171840.,
      157572., 162432., 167292., 172152., 157848., 162720., 167592., 172464.,
      158124., 163008., 167892., 172776., 158400., 163296., 168192., 173088.,
      158676., 163584., 168492., 173400., 158952., 163872., 168792., 173712.,
      163092., 168192., 173292., 178392., 163368., 168480., 173592., 178704.,
      163644., 168768., 173892., 179016., 163920., 169056., 174192., 179328.,
      164196., 169344., 174492., 179640., 164472., 169632., 174792., 179952.,
      164748., 169920., 175092., 180264., 165024., 170208., 175392., 180576.,
      165300., 170496., 175692., 180888., 165576., 170784., 175992., 181200.,
      165852., 171072., 176292., 181512., 166128., 171360., 176592., 181824.,
      166404., 171648., 176892., 182136., 166680., 171936., 177192., 182448.,
      170820., 176256., 181692., 187128., 171096., 176544., 181992., 187440.,
      171372., 176832., 182292., 187752., 171648., 177120., 182592., 188064.,
      171924., 177408., 182892., 188376., 172200., 177696., 183192., 188688.,
      172476., 177984., 183492., 189000., 172752., 178272., 183792., 189312.,
      173028., 178560., 184092., 189624., 173304., 178848., 184392., 189936.,
      173580., 179136., 184692., 190248., 173856., 179424., 184992., 190560.,
      174132., 179712., 185292., 190872., 174408., 180000., 185592., 191184.,
      178548., 184320., 190092., 195864., 178824., 184608., 190392., 196176.,
      179100., 184896., 190692., 196488., 179376., 185184., 190992., 196800.,
      179652., 185472., 191292., 197112., 179928., 185760., 191592., 197424.,
      180204., 186048., 191892., 197736., 180480., 186336., 192192., 198048.,
      180756., 186624., 192492., 198360., 181032., 186912., 192792., 198672.,
      181308., 187200., 193092., 198984., 181584., 187488., 193392., 199296.,
      181860., 187776., 193692., 199608., 182136., 188064., 193992., 199920.,
      186276., 192384., 198492., 204600., 186552., 192672., 198792., 204912.,
      186828., 192960., 199092., 205224., 187104., 193248., 199392., 205536.,
      187380., 193536., 199692., 205848., 187656., 193824., 199992., 206160.,
      187932., 194112., 200292., 206472., 188208., 194400., 200592., 206784.,
      188484., 194688., 200892., 207096., 188760., 194976., 201192., 207408.,
      189036., 195264., 201492., 207720., 189312., 195552., 201792., 208032.,
      189588., 195840., 202092., 208344., 189864., 196128., 202392., 208656.,
      194004., 200448., 206892., 213336., 194280., 200736., 207192., 213648.,
      194556., 201024., 207492., 213960., 194832., 201312., 207792., 214272.,
      195108., 201600., 208092., 214584., 195384., 201888., 208392., 214896.,
      195660., 202176., 208692., 215208., 195936., 202464., 208992., 215520.,
      196212., 202752., 209292., 215832., 196488., 203040., 209592., 216144.,
      196764., 203328., 209892., 216456., 197040., 203616., 210192., 216768.,
      197316., 203904., 210492., 217080., 197592., 204192., 210792., 217392.,
      201732., 208512., 215292., 222072., 202008., 208800., 215592., 222384.,
      202284., 209088., 215892., 222696., 202560., 209376., 216192., 223008.,
      202836., 209664., 216492., 223320., 203112., 209952., 216792., 223632.,
      203388., 210240., 217092., 223944., 203664., 210528., 217392., 224256.,
      203940., 210816., 217692., 224568., 204216., 211104., 217992., 224880.,
      204492., 211392., 218292., 225192., 204768., 211680., 218592., 225504.,
      205044., 211968., 218892., 225816., 205320., 212256., 219192., 226128.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      470298., 470676., 471054., 471432., 471810., 472188., 472566., 472944.,
      615564., 616056., 616548., 617040., 617532., 618024., 618516., 619008.,
      452712., 453072., 453432., 453792., 454152., 454512., 454872., 455232.,
      455592., 455952., 456312., 456672., 634041., 634554., 635067., 635580.,
      636093., 636606., 637119., 637632., 829146., 829812., 830478., 831144.,
      831810., 832476., 833142., 833808., 609174., 609660., 610146., 610632.,
      611118., 611604., 612090., 612576., 613062., 613548., 614034., 614520.,
      662769., 663282., 663795., 664308., 664821., 665334., 665847., 666360.,
      866442., 867108., 867774., 868440., 869106., 869772., 870438., 871104.,
      636390., 636876., 637362., 637848., 638334., 638820., 639306., 639792.,
      640278., 640764., 641250., 641736., 691497., 692010., 692523., 693036.,
      693549., 694062., 694575., 695088., 903738., 904404., 905070., 905736.,
      906402., 907068., 907734., 908400., 663606., 664092., 664578., 665064.,
      665550., 666036., 666522., 667008., 667494., 667980., 668466., 668952.,
      720225., 720738., 721251., 721764., 722277., 722790., 723303., 723816.,
      941034., 941700., 942366., 943032., 943698., 944364., 945030., 945696.,
      690822., 691308., 691794., 692280., 692766., 693252., 693738., 694224.,
      694710., 695196., 695682., 696168., 417090., 417396., 417702., 418008.,
      418314., 418620., 418926., 419232., 543948., 544344., 544740., 545136.,
      545532., 545928., 546324., 546720., 398496., 398784., 399072., 399360.,
      399648., 399936., 400224., 400512., 400800., 401088., 401376., 401664.,
      434226., 434532., 434838., 435144., 435450., 435756., 436062., 436368.,
      566124., 566520., 566916., 567312., 567708., 568104., 568500., 568896.,
      414624., 414912., 415200., 415488., 415776., 416064., 416352., 416640.,
      416928., 417216., 417504., 417792.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      84750.,  84828.,  84906.,  84984.,  85062.,  85140.,  85218.,  85296.,
      85374.,  85452.,  85530.,  85608.,  85686.,  85764.,  85842.,  85920.,
      85998.,  86076.,  86154.,  86232.,  86310.,  86388.,  86466.,  86544.,
      86622.,  86700.,  86778.,  86856.,  89118.,  89196.,  89274.,  89352.,
      89430.,  89508.,  89586.,  89664.,  89742.,  89820.,  89898.,  89976.,
      90054.,  90132.,  90210.,  90288.,  90366.,  90444.,  90522.,  90600.,
      90678.,  90756.,  90834.,  90912.,  90990.,  91068.,  91146.,  91224.,
      93486.,  93564.,  93642.,  93720.,  93798.,  93876.,  93954.,  94032.,
      94110.,  94188.,  94266.,  94344.,  94422.,  94500.,  94578.,  94656.,
      94734.,  94812.,  94890.,  94968.,  95046.,  95124.,  95202.,  95280.,
      95358.,  95436.,  95514.,  95592.,  97854.,  97932.,  98010.,  98088.,
      98166.,  98244.,  98322.,  98400.,  98478.,  98556.,  98634.,  98712.,
      98790.,  98868.,  98946.,  99024.,  99102.,  99180.,  99258.,  99336.,
      99414.,  99492.,  99570.,  99648.,  99726.,  99804.,  99882.,  99960.,
      102222., 102300., 102378., 102456., 102534., 102612., 102690., 102768.,
      102846., 102924., 103002., 103080., 103158., 103236., 103314., 103392.,
      103470., 103548., 103626., 103704., 103782., 103860., 103938., 104016.,
      104094., 104172., 104250., 104328., 106590., 106668., 106746., 106824.,
      106902., 106980., 107058., 107136., 107214., 107292., 107370., 107448.,
      107526., 107604., 107682., 107760., 107838., 107916., 107994., 108072.,
      108150., 108228., 108306., 108384., 108462., 108540., 108618., 108696.,
      110958., 111036., 111114., 111192., 111270., 111348., 111426., 111504.,
      111582., 111660., 111738., 111816., 111894., 111972., 112050., 112128.,
      112206., 112284., 112362., 112440., 112518., 112596., 112674., 112752.,
      112830., 112908., 112986., 113064.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      923010.,  940596.,  923748.,  941352.,  924486.,  942108.,  925224.,
      942864.,  925962.,  943620.,  926700.,  944376.,  927438.,  945132.,
      928176.,  945888.,  1207680., 1231128., 1208640., 1232112., 1209600.,
      1233096., 1210560., 1234080., 1211520., 1235064., 1212480., 1236048.,
      1213440., 1237032., 1214400., 1238016., 887838.,  905424.,  888540.,
      906144.,  889242.,  906864.,  889944.,  907584.,  890646.,  908304.,
      891348.,  909024.,  892050.,  909744.,  892752.,  910464.,  893454.,
      911184.,  894156.,  911904.,  894858.,  912624.,  895560.,  913344.,
      1243215., 1268082., 1244214., 1269108., 1245213., 1270134., 1246212.,
      1271160., 1247211., 1272186., 1248210., 1273212., 1249209., 1274238.,
      1250208., 1275264., 1625136., 1658292., 1626432., 1659624., 1627728.,
      1660956., 1629024., 1662288., 1630320., 1663620., 1631616., 1664952.,
      1632912., 1666284., 1634208., 1667616., 1193481., 1218348., 1194426.,
      1219320., 1195371., 1220292., 1196316., 1221264., 1197261., 1222236.,
      1198206., 1223208., 1199151., 1224180., 1200096., 1225152., 1201041.,
      1226124., 1201986., 1227096., 1202931., 1228068., 1203876., 1229040.,
      1299159., 1325538., 1300158., 1326564., 1301157., 1327590., 1302156.,
      1328616., 1303155., 1329642., 1304154., 1330668., 1305153., 1331694.,
      1306152., 1332720., 1697712., 1732884., 1699008., 1734216., 1700304.,
      1735548., 1701600., 1736880., 1702896., 1738212., 1704192., 1739544.,
      1705488., 1740876., 1706784., 1742208., 1246401., 1272780., 1247346.,
      1273752., 1248291., 1274724., 1249236., 1275696., 1250181., 1276668.,
      1251126., 1277640., 1252071., 1278612., 1253016., 1279584., 1253961.,
      1280556., 1254906., 1281528., 1255851., 1282500., 1256796., 1283472.,
      1355103., 1382994., 1356102., 1384020., 1357101., 1385046., 1358100.,
      1386072., 1359099., 1387098., 1360098., 1388124., 1361097., 1389150.,
      1362096., 1390176., 1770288., 1807476., 1771584., 1808808., 1772880.,
      1810140., 1774176., 1811472., 1775472., 1812804., 1776768., 1814136.,
      1778064., 1815468., 1779360., 1816800., 1299321., 1327212., 1300266.,
      1328184., 1301211., 1329156., 1302156., 1330128., 1303101., 1331100.,
      1304046., 1332072., 1304991., 1333044., 1305936., 1334016., 1306881.,
      1334988., 1307826., 1335960., 1308771., 1336932., 1309716., 1337904.,
      1411047., 1440450., 1412046., 1441476., 1413045., 1442502., 1414044.,
      1443528., 1415043., 1444554., 1416042., 1445580., 1417041., 1446606.,
      1418040., 1447632., 1842864., 1882068., 1844160., 1883400., 1845456.,
      1884732., 1846752., 1886064., 1848048., 1887396., 1849344., 1888728.,
      1850640., 1890060., 1851936., 1891392., 1352241., 1381644., 1353186.,
      1382616., 1354131., 1383588., 1355076., 1384560., 1356021., 1385532.,
      1356966., 1386504., 1357911., 1387476., 1358856., 1388448., 1359801.,
      1389420., 1360746., 1390392., 1361691., 1391364., 1362636., 1392336.,
      815586.,  834180.,  816180.,  834792.,  816774.,  835404.,  817368.,
      836016.,  817962.,  836628.,  818556.,  837240.,  819150.,  837852.,
      819744.,  838464.,  1063104., 1087896., 1063872., 1088688., 1064640.,
      1089480., 1065408., 1090272., 1066176., 1091064., 1066944., 1091856.,
      1067712., 1092648., 1068480., 1093440., 778398.,  796992.,  778956.,
      797568.,  779514.,  798144.,  780072.,  798720.,  780630.,  799296.,
      781188.,  799872.,  781746.,  800448.,  782304.,  801024.,  782862.,
      801600.,  783420.,  802176.,  783978.,  802752.,  784536.,  803328.,
      848850.,  868452.,  849444.,  869064.,  850038.,  869676.,  850632.,
      870288.,  851226.,  870900.,  851820.,  871512.,  852414.,  872124.,
      853008.,  872736.,  1106112., 1132248., 1106880., 1133040., 1107648.,
      1133832., 1108416., 1134624., 1109184., 1135416., 1109952., 1136208.,
      1110720., 1137000., 1111488., 1137792., 809646.,  829248.,  810204.,
      829824.,  810762.,  830400.,  811320.,  830976.,  811878.,  831552.,
      812436.,  832128.,  812994.,  832704.,  813552.,  833280.,  814110.,
      833856.,  814668.,  834432.,  815226.,  835008.,  815784.,  835584.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      159984., 169500., 160128., 169656., 160272., 169812., 160416., 169968.,
      160560., 170124., 160704., 170280., 160848., 170436., 160992., 170592.,
      161136., 170748., 161280., 170904., 161424., 171060., 161568., 171216.,
      161712., 171372., 161856., 171528., 162000., 171684., 162144., 171840.,
      162288., 171996., 162432., 172152., 162576., 172308., 162720., 172464.,
      162864., 172620., 163008., 172776., 163152., 172932., 163296., 173088.,
      163440., 173244., 163584., 173400., 163728., 173556., 163872., 173712.,
      168048., 178236., 168192., 178392., 168336., 178548., 168480., 178704.,
      168624., 178860., 168768., 179016., 168912., 179172., 169056., 179328.,
      169200., 179484., 169344., 179640., 169488., 179796., 169632., 179952.,
      169776., 180108., 169920., 180264., 170064., 180420., 170208., 180576.,
      170352., 180732., 170496., 180888., 170640., 181044., 170784., 181200.,
      170928., 181356., 171072., 181512., 171216., 181668., 171360., 181824.,
      171504., 181980., 171648., 182136., 171792., 182292., 171936., 182448.,
      176112., 186972., 176256., 187128., 176400., 187284., 176544., 187440.,
      176688., 187596., 176832., 187752., 176976., 187908., 177120., 188064.,
      177264., 188220., 177408., 188376., 177552., 188532., 177696., 188688.,
      177840., 188844., 177984., 189000., 178128., 189156., 178272., 189312.,
      178416., 189468., 178560., 189624., 178704., 189780., 178848., 189936.,
      178992., 190092., 179136., 190248., 179280., 190404., 179424., 190560.,
      179568., 190716., 179712., 190872., 179856., 191028., 180000., 191184.,
      184176., 195708., 184320., 195864., 184464., 196020., 184608., 196176.,
      184752., 196332., 184896., 196488., 185040., 196644., 185184., 196800.,
      185328., 196956., 185472., 197112., 185616., 197268., 185760., 197424.,
      185904., 197580., 186048., 197736., 186192., 197892., 186336., 198048.,
      186480., 198204., 186624., 198360., 186768., 198516., 186912., 198672.,
      187056., 198828., 187200., 198984., 187344., 199140., 187488., 199296.,
      187632., 199452., 187776., 199608., 187920., 199764., 188064., 199920.,
      192240., 204444., 192384., 204600., 192528., 204756., 192672., 204912.,
      192816., 205068., 192960., 205224., 193104., 205380., 193248., 205536.,
      193392., 205692., 193536., 205848., 193680., 206004., 193824., 206160.,
      193968., 206316., 194112., 206472., 194256., 206628., 194400., 206784.,
      194544., 206940., 194688., 207096., 194832., 207252., 194976., 207408.,
      195120., 207564., 195264., 207720., 195408., 207876., 195552., 208032.,
      195696., 208188., 195840., 208344., 195984., 208500., 196128., 208656.,
      200304., 213180., 200448., 213336., 200592., 213492., 200736., 213648.,
      200880., 213804., 201024., 213960., 201168., 214116., 201312., 214272.,
      201456., 214428., 201600., 214584., 201744., 214740., 201888., 214896.,
      202032., 215052., 202176., 215208., 202320., 215364., 202464., 215520.,
      202608., 215676., 202752., 215832., 202896., 215988., 203040., 216144.,
      203184., 216300., 203328., 216456., 203472., 216612., 203616., 216768.,
      203760., 216924., 203904., 217080., 204048., 217236., 204192., 217392.,
      208368., 221916., 208512., 222072., 208656., 222228., 208800., 222384.,
      208944., 222540., 209088., 222696., 209232., 222852., 209376., 223008.,
      209520., 223164., 209664., 223320., 209808., 223476., 209952., 223632.,
      210096., 223788., 210240., 223944., 210384., 224100., 210528., 224256.,
      210672., 224412., 210816., 224568., 210960., 224724., 211104., 224880.,
      211248., 225036., 211392., 225192., 211536., 225348., 211680., 225504.,
      211824., 225660., 211968., 225816., 212112., 225972., 212256., 226128.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x12x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1828434., 1846020., 1863606., 1881192., 1829892., 1847496., 1865100.,
      1882704., 1831350., 1848972., 1866594., 1884216., 1832808., 1850448.,
      1868088., 1885728., 1834266., 1851924., 1869582., 1887240., 1835724.,
      1853400., 1871076., 1888752., 1837182., 1854876., 1872570., 1890264.,
      1838640., 1856352., 1874064., 1891776., 2391912., 2415360., 2438808.,
      2462256., 2393808., 2417280., 2440752., 2464224., 2395704., 2419200.,
      2442696., 2466192., 2397600., 2421120., 2444640., 2468160., 2399496.,
      2423040., 2446584., 2470128., 2401392., 2424960., 2448528., 2472096.,
      2403288., 2426880., 2450472., 2474064., 2405184., 2428800., 2452416.,
      2476032., 1758090., 1775676., 1793262., 1810848., 1759476., 1777080.,
      1794684., 1812288., 1760862., 1778484., 1796106., 1813728., 1762248.,
      1779888., 1797528., 1815168., 1763634., 1781292., 1798950., 1816608.,
      1765020., 1782696., 1800372., 1818048., 1766406., 1784100., 1801794.,
      1819488., 1767792., 1785504., 1803216., 1820928., 1769178., 1786908.,
      1804638., 1822368., 1770564., 1788312., 1806060., 1823808., 1771950.,
      1789716., 1807482., 1825248., 1773336., 1791120., 1808904., 1826688.,
      2461563., 2486430., 2511297., 2536164., 2463534., 2488428., 2513322.,
      2538216., 2465505., 2490426., 2515347., 2540268., 2467476., 2492424.,
      2517372., 2542320., 2469447., 2494422., 2519397., 2544372., 2471418.,
      2496420., 2521422., 2546424., 2473389., 2498418., 2523447., 2548476.,
      2475360., 2500416., 2525472., 2550528., 3217116., 3250272., 3283428.,
      3316584., 3219672., 3252864., 3286056., 3319248., 3222228., 3255456.,
      3288684., 3321912., 3224784., 3258048., 3291312., 3324576., 3227340.,
      3260640., 3293940., 3327240., 3229896., 3263232., 3296568., 3329904.,
      3232452., 3265824., 3299196., 3332568., 3235008., 3268416., 3301824.,
      3335232., 2362095., 2386962., 2411829., 2436696., 2363958., 2388852.,
      2413746., 2438640., 2365821., 2390742., 2415663., 2440584., 2367684.,
      2392632., 2417580., 2442528., 2369547., 2394522., 2419497., 2444472.,
      2371410., 2396412., 2421414., 2446416., 2373273., 2398302., 2423331.,
      2448360., 2375136., 2400192., 2425248., 2450304., 2376999., 2402082.,
      2427165., 2452248., 2378862., 2403972., 2429082., 2454192., 2380725.,
      2405862., 2430999., 2456136., 2382588., 2407752., 2432916., 2458080.,
      2571939., 2598318., 2624697., 2651076., 2573910., 2600316., 2626722.,
      2653128., 2575881., 2602314., 2628747., 2655180., 2577852., 2604312.,
      2630772., 2657232., 2579823., 2606310., 2632797., 2659284., 2581794.,
      2608308., 2634822., 2661336., 2583765., 2610306., 2636847., 2663388.,
      2585736., 2612304., 2638872., 2665440., 3360252., 3395424., 3430596.,
      3465768., 3362808., 3398016., 3433224., 3468432., 3365364., 3400608.,
      3435852., 3471096., 3367920., 3403200., 3438480., 3473760., 3370476.,
      3405792., 3441108., 3476424., 3373032., 3408384., 3443736., 3479088.,
      3375588., 3410976., 3446364., 3481752., 3378144., 3413568., 3448992.,
      3484416., 2466423., 2492802., 2519181., 2545560., 2468286., 2494692.,
      2521098., 2547504., 2470149., 2496582., 2523015., 2549448., 2472012.,
      2498472., 2524932., 2551392., 2473875., 2500362., 2526849., 2553336.,
      2475738., 2502252., 2528766., 2555280., 2477601., 2504142., 2530683.,
      2557224., 2479464., 2506032., 2532600., 2559168., 2481327., 2507922.,
      2534517., 2561112., 2483190., 2509812., 2536434., 2563056., 2485053.,
      2511702., 2538351., 2565000., 2486916., 2513592., 2540268., 2566944.,
      2682315., 2710206., 2738097., 2765988., 2684286., 2712204., 2740122.,
      2768040., 2686257., 2714202., 2742147., 2770092., 2688228., 2716200.,
      2744172., 2772144., 2690199., 2718198., 2746197., 2774196., 2692170.,
      2720196., 2748222., 2776248., 2694141., 2722194., 2750247., 2778300.,
      2696112., 2724192., 2752272., 2780352., 3503388., 3540576., 3577764.,
      3614952., 3505944., 3543168., 3580392., 3617616., 3508500., 3545760.,
      3583020., 3620280., 3511056., 3548352., 3585648., 3622944., 3513612.,
      3550944., 3588276., 3625608., 3516168., 3553536., 3590904., 3628272.,
      3518724., 3556128., 3593532., 3630936., 3521280., 3558720., 3596160.,
      3633600., 2570751., 2598642., 2626533., 2654424., 2572614., 2600532.,
      2628450., 2656368., 2574477., 2602422., 2630367., 2658312., 2576340.,
      2604312., 2632284., 2660256., 2578203., 2606202., 2634201., 2662200.,
      2580066., 2608092., 2636118., 2664144., 2581929., 2609982., 2638035.,
      2666088., 2583792., 2611872., 2639952., 2668032., 2585655., 2613762.,
      2641869., 2669976., 2587518., 2615652., 2643786., 2671920., 2589381.,
      2617542., 2645703., 2673864., 2591244., 2619432., 2647620., 2675808.,
      2792691., 2822094., 2851497., 2880900., 2794662., 2824092., 2853522.,
      2882952., 2796633., 2826090., 2855547., 2885004., 2798604., 2828088.,
      2857572., 2887056., 2800575., 2830086., 2859597., 2889108., 2802546.,
      2832084., 2861622., 2891160., 2804517., 2834082., 2863647., 2893212.,
      2806488., 2836080., 2865672., 2895264., 3646524., 3685728., 3724932.,
      3764136., 3649080., 3688320., 3727560., 3766800., 3651636., 3690912.,
      3730188., 3769464., 3654192., 3693504., 3732816., 3772128., 3656748.,
      3696096., 3735444., 3774792., 3659304., 3698688., 3738072., 3777456.,
      3661860., 3701280., 3740700., 3780120., 3664416., 3703872., 3743328.,
      3782784., 2675079., 2704482., 2733885., 2763288., 2676942., 2706372.,
      2735802., 2765232., 2678805., 2708262., 2737719., 2767176., 2680668.,
      2710152., 2739636., 2769120., 2682531., 2712042., 2741553., 2771064.,
      2684394., 2713932., 2743470., 2773008., 2686257., 2715822., 2745387.,
      2774952., 2688120., 2717712., 2747304., 2776896., 2689983., 2719602.,
      2749221., 2778840., 2691846., 2721492., 2751138., 2780784., 2693709.,
      2723382., 2753055., 2782728., 2695572., 2725272., 2754972., 2784672.,
      1612578., 1631172., 1649766., 1668360., 1613748., 1632360., 1650972.,
      1669584., 1614918., 1633548., 1652178., 1670808., 1616088., 1634736.,
      1653384., 1672032., 1617258., 1635924., 1654590., 1673256., 1618428.,
      1637112., 1655796., 1674480., 1619598., 1638300., 1657002., 1675704.,
      1620768., 1639488., 1658208., 1676928., 2101416., 2126208., 2151000.,
      2175792., 2102928., 2127744., 2152560., 2177376., 2104440., 2129280.,
      2154120., 2178960., 2105952., 2130816., 2155680., 2180544., 2107464.,
      2132352., 2157240., 2182128., 2108976., 2133888., 2158800., 2183712.,
      2110488., 2135424., 2160360., 2185296., 2112000., 2136960., 2161920.,
      2186880., 1538202., 1556796., 1575390., 1593984., 1539300., 1557912.,
      1576524., 1595136., 1540398., 1559028., 1577658., 1596288., 1541496.,
      1560144., 1578792., 1597440., 1542594., 1561260., 1579926., 1598592.,
      1543692., 1562376., 1581060., 1599744., 1544790., 1563492., 1582194.,
      1600896., 1545888., 1564608., 1583328., 1602048., 1546986., 1565724.,
      1584462., 1603200., 1548084., 1566840., 1585596., 1604352., 1549182.,
      1567956., 1586730., 1605504., 1550280., 1569072., 1587864., 1606656.,
      1678098., 1697700., 1717302., 1736904., 1679268., 1698888., 1718508.,
      1738128., 1680438., 1700076., 1719714., 1739352., 1681608., 1701264.,
      1720920., 1740576., 1682778., 1702452., 1722126., 1741800., 1683948.,
      1703640., 1723332., 1743024., 1685118., 1704828., 1724538., 1744248.,
      1686288., 1706016., 1725744., 1745472., 2186088., 2212224., 2238360.,
      2264496., 2187600., 2213760., 2239920., 2266080., 2189112., 2215296.,
      2241480., 2267664., 2190624., 2216832., 2243040., 2269248., 2192136.,
      2218368., 2244600., 2270832., 2193648., 2219904., 2246160., 2272416.,
      2195160., 2221440., 2247720., 2274000., 2196672., 2222976., 2249280.,
      2275584., 1599690., 1619292., 1638894., 1658496., 1600788., 1620408.,
      1640028., 1659648., 1601886., 1621524., 1641162., 1660800., 1602984.,
      1622640., 1642296., 1661952., 1604082., 1623756., 1643430., 1663104.,
      1605180., 1624872., 1644564., 1664256., 1606278., 1625988., 1645698.,
      1665408., 1607376., 1627104., 1646832., 1666560., 1608474., 1628220.,
      1647966., 1667712., 1609572., 1629336., 1649100., 1668864., 1610670.,
      1630452., 1650234., 1670016., 1611768., 1631568., 1651368., 1671168.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x12x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      310452., 319968., 329484., 339000., 310728., 320256., 329784., 339312.,
      311004., 320544., 330084., 339624., 311280., 320832., 330384., 339936.,
      311556., 321120., 330684., 340248., 311832., 321408., 330984., 340560.,
      312108., 321696., 331284., 340872., 312384., 321984., 331584., 341184.,
      312660., 322272., 331884., 341496., 312936., 322560., 332184., 341808.,
      313212., 322848., 332484., 342120., 313488., 323136., 332784., 342432.,
      313764., 323424., 333084., 342744., 314040., 323712., 333384., 343056.,
      314316., 324000., 333684., 343368., 314592., 324288., 333984., 343680.,
      314868., 324576., 334284., 343992., 315144., 324864., 334584., 344304.,
      315420., 325152., 334884., 344616., 315696., 325440., 335184., 344928.,
      315972., 325728., 335484., 345240., 316248., 326016., 335784., 345552.,
      316524., 326304., 336084., 345864., 316800., 326592., 336384., 346176.,
      317076., 326880., 336684., 346488., 317352., 327168., 336984., 346800.,
      317628., 327456., 337284., 347112., 317904., 327744., 337584., 347424.,
      325908., 336096., 346284., 356472., 326184., 336384., 346584., 356784.,
      326460., 336672., 346884., 357096., 326736., 336960., 347184., 357408.,
      327012., 337248., 347484., 357720., 327288., 337536., 347784., 358032.,
      327564., 337824., 348084., 358344., 327840., 338112., 348384., 358656.,
      328116., 338400., 348684., 358968., 328392., 338688., 348984., 359280.,
      328668., 338976., 349284., 359592., 328944., 339264., 349584., 359904.,
      329220., 339552., 349884., 360216., 329496., 339840., 350184., 360528.,
      329772., 340128., 350484., 360840., 330048., 340416., 350784., 361152.,
      330324., 340704., 351084., 361464., 330600., 340992., 351384., 361776.,
      330876., 341280., 351684., 362088., 331152., 341568., 351984., 362400.,
      331428., 341856., 352284., 362712., 331704., 342144., 352584., 363024.,
      331980., 342432., 352884., 363336., 332256., 342720., 353184., 363648.,
      332532., 343008., 353484., 363960., 332808., 343296., 353784., 364272.,
      333084., 343584., 354084., 364584., 333360., 343872., 354384., 364896.,
      341364., 352224., 363084., 373944., 341640., 352512., 363384., 374256.,
      341916., 352800., 363684., 374568., 342192., 353088., 363984., 374880.,
      342468., 353376., 364284., 375192., 342744., 353664., 364584., 375504.,
      343020., 353952., 364884., 375816., 343296., 354240., 365184., 376128.,
      343572., 354528., 365484., 376440., 343848., 354816., 365784., 376752.,
      344124., 355104., 366084., 377064., 344400., 355392., 366384., 377376.,
      344676., 355680., 366684., 377688., 344952., 355968., 366984., 378000.,
      345228., 356256., 367284., 378312., 345504., 356544., 367584., 378624.,
      345780., 356832., 367884., 378936., 346056., 357120., 368184., 379248.,
      346332., 357408., 368484., 379560., 346608., 357696., 368784., 379872.,
      346884., 357984., 369084., 380184., 347160., 358272., 369384., 380496.,
      347436., 358560., 369684., 380808., 347712., 358848., 369984., 381120.,
      347988., 359136., 370284., 381432., 348264., 359424., 370584., 381744.,
      348540., 359712., 370884., 382056., 348816., 360000., 371184., 382368.,
      356820., 368352., 379884., 391416., 357096., 368640., 380184., 391728.,
      357372., 368928., 380484., 392040., 357648., 369216., 380784., 392352.,
      357924., 369504., 381084., 392664., 358200., 369792., 381384., 392976.,
      358476., 370080., 381684., 393288., 358752., 370368., 381984., 393600.,
      359028., 370656., 382284., 393912., 359304., 370944., 382584., 394224.,
      359580., 371232., 382884., 394536., 359856., 371520., 383184., 394848.,
      360132., 371808., 383484., 395160., 360408., 372096., 383784., 395472.,
      360684., 372384., 384084., 395784., 360960., 372672., 384384., 396096.,
      361236., 372960., 384684., 396408., 361512., 373248., 384984., 396720.,
      361788., 373536., 385284., 397032., 362064., 373824., 385584., 397344.,
      362340., 374112., 385884., 397656., 362616., 374400., 386184., 397968.,
      362892., 374688., 386484., 398280., 363168., 374976., 386784., 398592.,
      363444., 375264., 387084., 398904., 363720., 375552., 387384., 399216.,
      363996., 375840., 387684., 399528., 364272., 376128., 387984., 399840.,
      372276., 384480., 396684., 408888., 372552., 384768., 396984., 409200.,
      372828., 385056., 397284., 409512., 373104., 385344., 397584., 409824.,
      373380., 385632., 397884., 410136., 373656., 385920., 398184., 410448.,
      373932., 386208., 398484., 410760., 374208., 386496., 398784., 411072.,
      374484., 386784., 399084., 411384., 374760., 387072., 399384., 411696.,
      375036., 387360., 399684., 412008., 375312., 387648., 399984., 412320.,
      375588., 387936., 400284., 412632., 375864., 388224., 400584., 412944.,
      376140., 388512., 400884., 413256., 376416., 388800., 401184., 413568.,
      376692., 389088., 401484., 413880., 376968., 389376., 401784., 414192.,
      377244., 389664., 402084., 414504., 377520., 389952., 402384., 414816.,
      377796., 390240., 402684., 415128., 378072., 390528., 402984., 415440.,
      378348., 390816., 403284., 415752., 378624., 391104., 403584., 416064.,
      378900., 391392., 403884., 416376., 379176., 391680., 404184., 416688.,
      379452., 391968., 404484., 417000., 379728., 392256., 404784., 417312.,
      387732., 400608., 413484., 426360., 388008., 400896., 413784., 426672.,
      388284., 401184., 414084., 426984., 388560., 401472., 414384., 427296.,
      388836., 401760., 414684., 427608., 389112., 402048., 414984., 427920.,
      389388., 402336., 415284., 428232., 389664., 402624., 415584., 428544.,
      389940., 402912., 415884., 428856., 390216., 403200., 416184., 429168.,
      390492., 403488., 416484., 429480., 390768., 403776., 416784., 429792.,
      391044., 404064., 417084., 430104., 391320., 404352., 417384., 430416.,
      391596., 404640., 417684., 430728., 391872., 404928., 417984., 431040.,
      392148., 405216., 418284., 431352., 392424., 405504., 418584., 431664.,
      392700., 405792., 418884., 431976., 392976., 406080., 419184., 432288.,
      393252., 406368., 419484., 432600., 393528., 406656., 419784., 432912.,
      393804., 406944., 420084., 433224., 394080., 407232., 420384., 433536.,
      394356., 407520., 420684., 433848., 394632., 407808., 420984., 434160.,
      394908., 408096., 421284., 434472., 395184., 408384., 421584., 434784.,
      403188., 416736., 430284., 443832., 403464., 417024., 430584., 444144.,
      403740., 417312., 430884., 444456., 404016., 417600., 431184., 444768.,
      404292., 417888., 431484., 445080., 404568., 418176., 431784., 445392.,
      404844., 418464., 432084., 445704., 405120., 418752., 432384., 446016.,
      405396., 419040., 432684., 446328., 405672., 419328., 432984., 446640.,
      405948., 419616., 433284., 446952., 406224., 419904., 433584., 447264.,
      406500., 420192., 433884., 447576., 406776., 420480., 434184., 447888.,
      407052., 420768., 434484., 448200., 407328., 421056., 434784., 448512.,
      407604., 421344., 435084., 448824., 407880., 421632., 435384., 449136.,
      408156., 421920., 435684., 449448., 408432., 422208., 435984., 449760.,
      408708., 422496., 436284., 450072., 408984., 422784., 436584., 450384.,
      409260., 423072., 436884., 450696., 409536., 423360., 437184., 451008.,
      409812., 423648., 437484., 451320., 410088., 423936., 437784., 451632.,
      410364., 424224., 438084., 451944., 410640., 424512., 438384., 452256.};
  const std::array<int, 4> in_shape = {{3, 12, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      106803., 107172., 157212., 157752., 158292., 103104., 103455.,
      110862., 111231., 163152., 163692., 164232., 106965., 107316.,
      136152., 136608., 200238., 200904., 201570., 131184., 131616.,
      141168., 141624., 207564., 208230., 208896., 135936., 136368.,
      94653.,  94968.,  138987., 139446., 139905., 90900.,  91197.,
      98118.,  98433.,  144036., 144495., 144954., 94167.,  94464.,
      101583., 101898., 149085., 149544., 150003., 97434.,  97731.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x11x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      19166., 19244., 19322., 19400., 19478., 19556., 19634., 20024., 20102.,
      20180., 20258., 20336., 20414., 20492., 20882., 20960., 21038., 21116.,
      21194., 21272., 21350., 21740., 21818., 21896., 21974., 22052., 22130.,
      22208., 22598., 22676., 22754., 22832., 22910., 22988., 23066., 23456.,
      23534., 23612., 23690., 23768., 23846., 23924., 24314., 24392., 24470.,
      24548., 24626., 24704., 24782.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      209556., 213606., 210276., 214344., 308349., 314424., 309402., 315504.,
      310455., 316584., 202140., 206208., 202824., 206910., 217476., 221724.,
      218196., 222462., 319932., 326304., 320985., 327384., 322038., 328464.,
      209664., 213930., 210348., 214632., 266904., 272304., 267792., 273216.,
      392376., 400476., 393672., 401808., 394968., 403140., 256944., 262368.,
      257784., 263232., 276672., 282336., 277560., 283248., 406632., 415128.,
      407928., 416460., 409224., 417792., 266184., 271872., 267024., 272736.,
      185256., 189306., 185868., 189936., 271899., 277974., 272790., 278892.,
      273681., 279810., 177732., 181800., 178308., 182394., 191988., 196236.,
      192600., 196866., 281700., 288072., 282591., 288990., 283482., 289908.,
      184068., 188334., 184644., 188928., 198720., 203166., 199332., 203796.,
      291501., 298170., 292392., 299088., 293283., 300006., 190404., 194868.,
      190980., 195462.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x11x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      36184., 38332., 36328., 38488., 36472., 38644., 36616., 38800., 36760.,
      38956., 36904., 39112., 37048., 39268., 37768., 40048., 37912., 40204.,
      38056., 40360., 38200., 40516., 38344., 40672., 38488., 40828., 38632.,
      40984., 39352., 41764., 39496., 41920., 39640., 42076., 39784., 42232.,
      39928., 42388., 40072., 42544., 40216., 42700., 40936., 43480., 41080.,
      43636., 41224., 43792., 41368., 43948., 41512., 44104., 41656., 44260.,
      41800., 44416., 42520., 45196., 42664., 45352., 42808., 45508., 42952.,
      45664., 43096., 45820., 43240., 45976., 43384., 46132., 44104., 46912.,
      44248., 47068., 44392., 47224., 44536., 47380., 44680., 47536., 44824.,
      47692., 44968., 47848., 45688., 48628., 45832., 48784., 45976., 48940.,
      46120., 49096., 46264., 49252., 46408., 49408., 46552., 49564.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      415062., 419112., 423162., 427212., 416484., 420552., 424620., 428688.,
      610623., 616698., 622773., 628848., 612702., 618804., 624906., 631008.,
      614781., 620910., 627039., 633168., 400212., 404280., 408348., 412416.,
      401562., 405648., 409734., 413820., 430704., 434952., 439200., 443448.,
      432126., 436392., 440658., 444924., 633492., 639864., 646236., 652608.,
      635571., 641970., 648369., 654768., 637650., 644076., 650502., 656928.,
      415062., 419328., 423594., 427860., 416412., 420696., 424980., 429264.,
      528408., 533808., 539208., 544608., 530160., 535584., 541008., 546432.,
      776652., 784752., 792852., 800952., 779208., 787344., 795480., 803616.,
      781764., 789936., 798108., 806280., 508464., 513888., 519312., 524736.,
      510120., 515568., 521016., 526464., 547680., 553344., 559008., 564672.,
      549432., 555120., 560808., 566496., 804768., 813264., 821760., 830256.,
      807324., 815856., 824388., 832920., 809880., 818448., 827016., 835584.,
      526680., 532368., 538056., 543744., 528336., 534048., 539760., 545472.,
      366462., 370512., 374562., 378612., 367668., 371736., 375804., 379872.,
      537723., 543798., 549873., 555948., 539478., 545580., 551682., 557784.,
      541233., 547362., 553491., 559620., 351396., 355464., 359532., 363600.,
      352530., 356616., 360702., 364788., 379728., 383976., 388224., 392472.,
      380934., 385200., 389466., 393732., 557028., 563400., 569772., 576144.,
      558783., 565182., 571581., 577980., 560538., 566964., 573390., 579816.,
      363870., 368136., 372402., 376668., 365004., 369288., 373572., 377856.,
      392994., 397440., 401886., 406332., 394200., 398664., 403128., 407592.,
      576333., 583002., 589671., 596340., 578088., 584784., 591480., 598176.,
      579843., 586566., 593289., 600012., 376344., 380808., 385272., 389736.,
      377478., 381960., 386442., 390924.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x11x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70220., 72368., 74516., 76664., 70496., 72656., 74816., 76976., 70772.,
      72944., 75116., 77288., 71048., 73232., 75416., 77600., 71324., 73520.,
      75716., 77912., 71600., 73808., 76016., 78224., 71876., 74096., 76316.,
      78536., 73256., 75536., 77816., 80096., 73532., 75824., 78116., 80408.,
      73808., 76112., 78416., 80720., 74084., 76400., 78716., 81032., 74360.,
      76688., 79016., 81344., 74636., 76976., 79316., 81656., 74912., 77264.,
      79616., 81968., 76292., 78704., 81116., 83528., 76568., 78992., 81416.,
      83840., 76844., 79280., 81716., 84152., 77120., 79568., 82016., 84464.,
      77396., 79856., 82316., 84776., 77672., 80144., 82616., 85088., 77948.,
      80432., 82916., 85400., 79328., 81872., 84416., 86960., 79604., 82160.,
      84716., 87272., 79880., 82448., 85016., 87584., 80156., 82736., 85316.,
      87896., 80432., 83024., 85616., 88208., 80708., 83312., 85916., 88520.,
      80984., 83600., 86216., 88832., 82364., 85040., 87716., 90392., 82640.,
      85328., 88016., 90704., 82916., 85616., 88316., 91016., 83192., 85904.,
      88616., 91328., 83468., 86192., 88916., 91640., 83744., 86480., 89216.,
      91952., 84020., 86768., 89516., 92264., 85400., 88208., 91016., 93824.,
      85676., 88496., 91316., 94136., 85952., 88784., 91616., 94448., 86228.,
      89072., 91916., 94760., 86504., 89360., 92216., 95072., 86780., 89648.,
      92516., 95384., 87056., 89936., 92816., 95696., 88436., 91376., 94316.,
      97256., 88712., 91664., 94616., 97568., 88988., 91952., 94916., 97880.,
      89264., 92240., 95216., 98192., 89540., 92528., 95516., 98504., 89816.,
      92816., 95816., 98816., 90092., 93104., 96116., 99128.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      213237., 213606., 213975., 214344., 313884., 314424., 314964., 315504.,
      316044., 316584., 205857., 206208., 206559., 206910., 221355., 221724.,
      222093., 222462., 325764., 326304., 326844., 327384., 327924., 328464.,
      213579., 213930., 214281., 214632., 271848., 272304., 272760., 273216.,
      399810., 400476., 401142., 401808., 402474., 403140., 261936., 262368.,
      262800., 263232., 281880., 282336., 282792., 283248., 414462., 415128.,
      415794., 416460., 417126., 417792., 271440., 271872., 272304., 272736.,
      188991., 189306., 189621., 189936., 277515., 277974., 278433., 278892.,
      279351., 279810., 181503., 181800., 182097., 182394., 195921., 196236.,
      196551., 196866., 287613., 288072., 288531., 288990., 289449., 289908.,
      188037., 188334., 188631., 188928., 202851., 203166., 203481., 203796.,
      297711., 298170., 298629., 299088., 299547., 300006., 194571., 194868.,
      195165., 195462.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x11x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      38254., 38332., 38410., 38488., 38566., 38644., 38722., 38800., 38878.,
      38956., 39034., 39112., 39190., 39268., 39970., 40048., 40126., 40204.,
      40282., 40360., 40438., 40516., 40594., 40672., 40750., 40828., 40906.,
      40984., 41686., 41764., 41842., 41920., 41998., 42076., 42154., 42232.,
      42310., 42388., 42466., 42544., 42622., 42700., 43402., 43480., 43558.,
      43636., 43714., 43792., 43870., 43948., 44026., 44104., 44182., 44260.,
      44338., 44416., 45118., 45196., 45274., 45352., 45430., 45508., 45586.,
      45664., 45742., 45820., 45898., 45976., 46054., 46132., 46834., 46912.,
      46990., 47068., 47146., 47224., 47302., 47380., 47458., 47536., 47614.,
      47692., 47770., 47848., 48550., 48628., 48706., 48784., 48862., 48940.,
      49018., 49096., 49174., 49252., 49330., 49408., 49486., 49564.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      418392., 426474., 419112., 427212., 419832., 427950., 420552., 428688.,
      615645., 627768., 616698., 628848., 617751., 629928., 618804., 631008.,
      619857., 632088., 620910., 633168., 403596., 411714., 404280., 412416.,
      404964., 413118., 405648., 413820., 434232., 442710., 434952., 443448.,
      435672., 444186., 436392., 444924., 638811., 651528., 639864., 652608.,
      640917., 653688., 641970., 654768., 643023., 655848., 644076., 656928.,
      418644., 427158., 419328., 427860., 420012., 428562., 420696., 429264.,
      532920., 543696., 533808., 544608., 534696., 545520., 535584., 546432.,
      783456., 799620., 784752., 800952., 786048., 802284., 787344., 803616.,
      788640., 804948., 789936., 806280., 513048., 523872., 513888., 524736.,
      514728., 525600., 515568., 526464., 552456., 563760., 553344., 564672.,
      554232., 565584., 555120., 566496., 811968., 828924., 813264., 830256.,
      814560., 831588., 815856., 832920., 817152., 834252., 818448., 835584.,
      531528., 542880., 532368., 543744., 533208., 544608., 534048., 545472.,
      369900., 377982., 370512., 378612., 371124., 379242., 371736., 379872.,
      542907., 555030., 543798., 555948., 544689., 556866., 545580., 557784.,
      546471., 558702., 547362., 559620., 354888., 363006., 355464., 363600.,
      356040., 364194., 356616., 364788., 383364., 391842., 383976., 392472.,
      384588., 393102., 385200., 393732., 562509., 575226., 563400., 576144.,
      564291., 577062., 565182., 577980., 566073., 578898., 566964., 579816.,
      367560., 376074., 368136., 376668., 368712., 377262., 369288., 377856.,
      396828., 405702., 397440., 406332., 398052., 406962., 398664., 407592.,
      582111., 595422., 583002., 596340., 583893., 597258., 584784., 598176.,
      585675., 599094., 586566., 600012., 380232., 389142., 380808., 389736.,
      381384., 390330., 381960., 390924.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x11x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      72224., 76508., 72368., 76664., 72512., 76820., 72656., 76976., 72800.,
      77132., 72944., 77288., 73088., 77444., 73232., 77600., 73376., 77756.,
      73520., 77912., 73664., 78068., 73808., 78224., 73952., 78380., 74096.,
      78536., 75392., 79940., 75536., 80096., 75680., 80252., 75824., 80408.,
      75968., 80564., 76112., 80720., 76256., 80876., 76400., 81032., 76544.,
      81188., 76688., 81344., 76832., 81500., 76976., 81656., 77120., 81812.,
      77264., 81968., 78560., 83372., 78704., 83528., 78848., 83684., 78992.,
      83840., 79136., 83996., 79280., 84152., 79424., 84308., 79568., 84464.,
      79712., 84620., 79856., 84776., 80000., 84932., 80144., 85088., 80288.,
      85244., 80432., 85400., 81728., 86804., 81872., 86960., 82016., 87116.,
      82160., 87272., 82304., 87428., 82448., 87584., 82592., 87740., 82736.,
      87896., 82880., 88052., 83024., 88208., 83168., 88364., 83312., 88520.,
      83456., 88676., 83600., 88832., 84896., 90236., 85040., 90392., 85184.,
      90548., 85328., 90704., 85472., 90860., 85616., 91016., 85760., 91172.,
      85904., 91328., 86048., 91484., 86192., 91640., 86336., 91796., 86480.,
      91952., 86624., 92108., 86768., 92264., 88064., 93668., 88208., 93824.,
      88352., 93980., 88496., 94136., 88640., 94292., 88784., 94448., 88928.,
      94604., 89072., 94760., 89216., 94916., 89360., 95072., 89504., 95228.,
      89648., 95384., 89792., 95540., 89936., 95696., 91232., 97100., 91376.,
      97256., 91520., 97412., 91664., 97568., 91808., 97724., 91952., 97880.,
      92096., 98036., 92240., 98192., 92384., 98348., 92528., 98504., 92672.,
      98660., 92816., 98816., 92960., 98972., 93104., 99128.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      828702.,  836784.,  844866.,  852948.,  830124.,  838224.,  846324.,
      854424.,  831546.,  839664.,  847782.,  855900.,  832968.,  841104.,
      849240.,  857376.,  1219167., 1231290., 1243413., 1255536., 1221246.,
      1233396., 1245546., 1257696., 1223325., 1235502., 1247679., 1259856.,
      1225404., 1237608., 1249812., 1262016., 1227483., 1239714., 1251945.,
      1264176., 1229562., 1241820., 1254078., 1266336., 799074.,  807192.,
      815310.,  823428.,  800424.,  808560.,  816696.,  824832.,  801774.,
      809928.,  818082.,  826236.,  803124.,  811296.,  819468.,  827640.,
      859986.,  868464.,  876942.,  885420.,  861408.,  869904.,  878400.,
      886896.,  862830.,  871344.,  879858.,  888372.,  864252.,  872784.,
      881316.,  889848.,  1264905., 1277622., 1290339., 1303056., 1266984.,
      1279728., 1292472., 1305216., 1269063., 1281834., 1294605., 1307376.,
      1271142., 1283940., 1296738., 1309536., 1273221., 1286046., 1298871.,
      1311696., 1275300., 1288152., 1301004., 1313856., 828774.,  837288.,
      845802.,  854316.,  830124.,  838656.,  847188.,  855720.,  831474.,
      840024.,  848574.,  857124.,  832824.,  841392.,  849960.,  858528.,
      1055064., 1065840., 1076616., 1087392., 1056816., 1067616., 1078416.,
      1089216., 1058568., 1069392., 1080216., 1091040., 1060320., 1071168.,
      1082016., 1092864., 1550748., 1566912., 1583076., 1599240., 1553304.,
      1569504., 1585704., 1601904., 1555860., 1572096., 1588332., 1604568.,
      1558416., 1574688., 1590960., 1607232., 1560972., 1577280., 1593588.,
      1609896., 1563528., 1579872., 1596216., 1612560., 1015272., 1026096.,
      1036920., 1047744., 1016928., 1027776., 1038624., 1049472., 1018584.,
      1029456., 1040328., 1051200., 1020240., 1031136., 1042032., 1052928.,
      1093608., 1104912., 1116216., 1127520., 1095360., 1106688., 1118016.,
      1129344., 1097112., 1108464., 1119816., 1131168., 1098864., 1110240.,
      1121616., 1132992., 1606980., 1623936., 1640892., 1657848., 1609536.,
      1626528., 1643520., 1660512., 1612092., 1629120., 1646148., 1663176.,
      1614648., 1631712., 1648776., 1665840., 1617204., 1634304., 1651404.,
      1668504., 1619760., 1636896., 1654032., 1671168., 1051704., 1063056.,
      1074408., 1085760., 1053360., 1064736., 1076112., 1087488., 1055016.,
      1066416., 1077816., 1089216., 1056672., 1068096., 1079520., 1090944.,
      731718.,  739800.,  747882.,  755964.,  732924.,  741024.,  749124.,
      757224.,  734130.,  742248.,  750366.,  758484.,  735336.,  743472.,
      751608.,  759744.,  1073691., 1085814., 1097937., 1110060., 1075446.,
      1087596., 1099746., 1111896., 1077201., 1089378., 1101555., 1113732.,
      1078956., 1091160., 1103364., 1115568., 1080711., 1092942., 1105173.,
      1117404., 1082466., 1094724., 1106982., 1119240., 701658.,  709776.,
      717894.,  726012.,  702792.,  710928.,  719064.,  727200.,  703926.,
      712080.,  720234.,  728388.,  705060.,  713232.,  721404.,  729576.,
      758250.,  766728.,  775206.,  783684.,  759456.,  767952.,  776448.,
      784944.,  760662.,  769176.,  777690.,  786204.,  761868.,  770400.,
      778932.,  787464.,  1112301., 1125018., 1137735., 1150452., 1114056.,
      1126800., 1139544., 1152288., 1115811., 1128582., 1141353., 1154124.,
      1117566., 1130364., 1143162., 1155960., 1119321., 1132146., 1144971.,
      1157796., 1121076., 1133928., 1146780., 1159632., 726606.,  735120.,
      743634.,  752148.,  727740.,  736272.,  744804.,  753336.,  728874.,
      737424.,  745974.,  754524.,  730008.,  738576.,  747144.,  755712.,
      784782.,  793656.,  802530.,  811404.,  785988.,  794880.,  803772.,
      812664.,  787194.,  796104.,  805014.,  813924.,  788400.,  797328.,
      806256.,  815184.,  1150911., 1164222., 1177533., 1190844., 1152666.,
      1166004., 1179342., 1192680., 1154421., 1167786., 1181151., 1194516.,
      1156176., 1169568., 1182960., 1196352., 1157931., 1171350., 1184769.,
      1198188., 1159686., 1173132., 1186578., 1200024., 751554.,  760464.,
      769374.,  778284.,  752688.,  761616.,  770544.,  779472.,  753822.,
      762768.,  771714.,  780660.,  754956.,  763920.,  772884.,  781848.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x11x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      140164., 144448., 148732., 153016., 140440., 144736., 149032., 153328.,
      140716., 145024., 149332., 153640., 140992., 145312., 149632., 153952.,
      141268., 145600., 149932., 154264., 141544., 145888., 150232., 154576.,
      141820., 146176., 150532., 154888., 142096., 146464., 150832., 155200.,
      142372., 146752., 151132., 155512., 142648., 147040., 151432., 155824.,
      142924., 147328., 151732., 156136., 143200., 147616., 152032., 156448.,
      143476., 147904., 152332., 156760., 143752., 148192., 152632., 157072.,
      146236., 150784., 155332., 159880., 146512., 151072., 155632., 160192.,
      146788., 151360., 155932., 160504., 147064., 151648., 156232., 160816.,
      147340., 151936., 156532., 161128., 147616., 152224., 156832., 161440.,
      147892., 152512., 157132., 161752., 148168., 152800., 157432., 162064.,
      148444., 153088., 157732., 162376., 148720., 153376., 158032., 162688.,
      148996., 153664., 158332., 163000., 149272., 153952., 158632., 163312.,
      149548., 154240., 158932., 163624., 149824., 154528., 159232., 163936.,
      152308., 157120., 161932., 166744., 152584., 157408., 162232., 167056.,
      152860., 157696., 162532., 167368., 153136., 157984., 162832., 167680.,
      153412., 158272., 163132., 167992., 153688., 158560., 163432., 168304.,
      153964., 158848., 163732., 168616., 154240., 159136., 164032., 168928.,
      154516., 159424., 164332., 169240., 154792., 159712., 164632., 169552.,
      155068., 160000., 164932., 169864., 155344., 160288., 165232., 170176.,
      155620., 160576., 165532., 170488., 155896., 160864., 165832., 170800.,
      158380., 163456., 168532., 173608., 158656., 163744., 168832., 173920.,
      158932., 164032., 169132., 174232., 159208., 164320., 169432., 174544.,
      159484., 164608., 169732., 174856., 159760., 164896., 170032., 175168.,
      160036., 165184., 170332., 175480., 160312., 165472., 170632., 175792.,
      160588., 165760., 170932., 176104., 160864., 166048., 171232., 176416.,
      161140., 166336., 171532., 176728., 161416., 166624., 171832., 177040.,
      161692., 166912., 172132., 177352., 161968., 167200., 172432., 177664.,
      164452., 169792., 175132., 180472., 164728., 170080., 175432., 180784.,
      165004., 170368., 175732., 181096., 165280., 170656., 176032., 181408.,
      165556., 170944., 176332., 181720., 165832., 171232., 176632., 182032.,
      166108., 171520., 176932., 182344., 166384., 171808., 177232., 182656.,
      166660., 172096., 177532., 182968., 166936., 172384., 177832., 183280.,
      167212., 172672., 178132., 183592., 167488., 172960., 178432., 183904.,
      167764., 173248., 178732., 184216., 168040., 173536., 179032., 184528.,
      170524., 176128., 181732., 187336., 170800., 176416., 182032., 187648.,
      171076., 176704., 182332., 187960., 171352., 176992., 182632., 188272.,
      171628., 177280., 182932., 188584., 171904., 177568., 183232., 188896.,
      172180., 177856., 183532., 189208., 172456., 178144., 183832., 189520.,
      172732., 178432., 184132., 189832., 173008., 178720., 184432., 190144.,
      173284., 179008., 184732., 190456., 173560., 179296., 185032., 190768.,
      173836., 179584., 185332., 191080., 174112., 179872., 185632., 191392.,
      176596., 182464., 188332., 194200., 176872., 182752., 188632., 194512.,
      177148., 183040., 188932., 194824., 177424., 183328., 189232., 195136.,
      177700., 183616., 189532., 195448., 177976., 183904., 189832., 195760.,
      178252., 184192., 190132., 196072., 178528., 184480., 190432., 196384.,
      178804., 184768., 190732., 196696., 179080., 185056., 191032., 197008.,
      179356., 185344., 191332., 197320., 179632., 185632., 191632., 197632.,
      179908., 185920., 191932., 197944., 180184., 186208., 192232., 198256.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      426105., 426474., 426843., 427212., 427581., 427950., 428319., 428688.,
      627228., 627768., 628308., 628848., 629388., 629928., 630468., 631008.,
      631548., 632088., 632628., 633168., 411363., 411714., 412065., 412416.,
      412767., 413118., 413469., 413820., 442341., 442710., 443079., 443448.,
      443817., 444186., 444555., 444924., 650988., 651528., 652068., 652608.,
      653148., 653688., 654228., 654768., 655308., 655848., 656388., 656928.,
      426807., 427158., 427509., 427860., 428211., 428562., 428913., 429264.,
      543240., 543696., 544152., 544608., 545064., 545520., 545976., 546432.,
      798954., 799620., 800286., 800952., 801618., 802284., 802950., 803616.,
      804282., 804948., 805614., 806280., 523440., 523872., 524304., 524736.,
      525168., 525600., 526032., 526464., 563304., 563760., 564216., 564672.,
      565128., 565584., 566040., 566496., 828258., 828924., 829590., 830256.,
      830922., 831588., 832254., 832920., 833586., 834252., 834918., 835584.,
      542448., 542880., 543312., 543744., 544176., 544608., 545040., 545472.,
      377667., 377982., 378297., 378612., 378927., 379242., 379557., 379872.,
      554571., 555030., 555489., 555948., 556407., 556866., 557325., 557784.,
      558243., 558702., 559161., 559620., 362709., 363006., 363303., 363600.,
      363897., 364194., 364491., 364788., 391527., 391842., 392157., 392472.,
      392787., 393102., 393417., 393732., 574767., 575226., 575685., 576144.,
      576603., 577062., 577521., 577980., 578439., 578898., 579357., 579816.,
      375777., 376074., 376371., 376668., 376965., 377262., 377559., 377856.,
      405387., 405702., 406017., 406332., 406647., 406962., 407277., 407592.,
      594963., 595422., 595881., 596340., 596799., 597258., 597717., 598176.,
      598635., 599094., 599553., 600012., 388845., 389142., 389439., 389736.,
      390033., 390330., 390627., 390924.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x11x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      76430., 76508., 76586., 76664., 76742., 76820., 76898., 76976., 77054.,
      77132., 77210., 77288., 77366., 77444., 77522., 77600., 77678., 77756.,
      77834., 77912., 77990., 78068., 78146., 78224., 78302., 78380., 78458.,
      78536., 79862., 79940., 80018., 80096., 80174., 80252., 80330., 80408.,
      80486., 80564., 80642., 80720., 80798., 80876., 80954., 81032., 81110.,
      81188., 81266., 81344., 81422., 81500., 81578., 81656., 81734., 81812.,
      81890., 81968., 83294., 83372., 83450., 83528., 83606., 83684., 83762.,
      83840., 83918., 83996., 84074., 84152., 84230., 84308., 84386., 84464.,
      84542., 84620., 84698., 84776., 84854., 84932., 85010., 85088., 85166.,
      85244., 85322., 85400., 86726., 86804., 86882., 86960., 87038., 87116.,
      87194., 87272., 87350., 87428., 87506., 87584., 87662., 87740., 87818.,
      87896., 87974., 88052., 88130., 88208., 88286., 88364., 88442., 88520.,
      88598., 88676., 88754., 88832., 90158., 90236., 90314., 90392., 90470.,
      90548., 90626., 90704., 90782., 90860., 90938., 91016., 91094., 91172.,
      91250., 91328., 91406., 91484., 91562., 91640., 91718., 91796., 91874.,
      91952., 92030., 92108., 92186., 92264., 93590., 93668., 93746., 93824.,
      93902., 93980., 94058., 94136., 94214., 94292., 94370., 94448., 94526.,
      94604., 94682., 94760., 94838., 94916., 94994., 95072., 95150., 95228.,
      95306., 95384., 95462., 95540., 95618., 95696., 97022., 97100., 97178.,
      97256., 97334., 97412., 97490., 97568., 97646., 97724., 97802., 97880.,
      97958., 98036., 98114., 98192., 98270., 98348., 98426., 98504., 98582.,
      98660., 98738., 98816., 98894., 98972., 99050., 99128.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      836064.,  852210.,  836784.,  852948.,  837504.,  853686.,  838224.,
      854424.,  838944.,  855162.,  839664.,  855900.,  840384.,  856638.,
      841104.,  857376.,  1230237., 1254456., 1231290., 1255536., 1232343.,
      1256616., 1233396., 1257696., 1234449., 1258776., 1235502., 1259856.,
      1236555., 1260936., 1237608., 1262016., 1238661., 1263096., 1239714.,
      1264176., 1240767., 1265256., 1241820., 1266336., 806508.,  822726.,
      807192.,  823428.,  807876.,  824130.,  808560.,  824832.,  809244.,
      825534.,  809928.,  826236.,  810612.,  826938.,  811296.,  827640.,
      867744.,  884682.,  868464.,  885420.,  869184.,  886158.,  869904.,
      886896.,  870624.,  887634.,  871344.,  888372.,  872064.,  889110.,
      872784.,  889848.,  1276569., 1301976., 1277622., 1303056., 1278675.,
      1304136., 1279728., 1305216., 1280781., 1306296., 1281834., 1307376.,
      1282887., 1308456., 1283940., 1309536., 1284993., 1310616., 1286046.,
      1311696., 1287099., 1312776., 1288152., 1313856., 836604.,  853614.,
      837288.,  854316.,  837972.,  855018.,  838656.,  855720.,  839340.,
      856422.,  840024.,  857124.,  840708.,  857826.,  841392.,  858528.,
      1064952., 1086480., 1065840., 1087392., 1066728., 1088304., 1067616.,
      1089216., 1068504., 1090128., 1069392., 1091040., 1070280., 1091952.,
      1071168., 1092864., 1565616., 1597908., 1566912., 1599240., 1568208.,
      1600572., 1569504., 1601904., 1570800., 1603236., 1572096., 1604568.,
      1573392., 1605900., 1574688., 1607232., 1575984., 1608564., 1577280.,
      1609896., 1578576., 1611228., 1579872., 1612560., 1025256., 1046880.,
      1026096., 1047744., 1026936., 1048608., 1027776., 1049472., 1028616.,
      1050336., 1029456., 1051200., 1030296., 1052064., 1031136., 1052928.,
      1104024., 1126608., 1104912., 1127520., 1105800., 1128432., 1106688.,
      1129344., 1107576., 1130256., 1108464., 1131168., 1109352., 1132080.,
      1110240., 1132992., 1622640., 1656516., 1623936., 1657848., 1625232.,
      1659180., 1626528., 1660512., 1627824., 1661844., 1629120., 1663176.,
      1630416., 1664508., 1631712., 1665840., 1633008., 1667172., 1634304.,
      1668504., 1635600., 1669836., 1636896., 1671168., 1062216., 1084896.,
      1063056., 1085760., 1063896., 1086624., 1064736., 1087488., 1065576.,
      1088352., 1066416., 1089216., 1067256., 1090080., 1068096., 1090944.,
      739188.,  755334.,  739800.,  755964.,  740412.,  756594.,  741024.,
      757224.,  741636.,  757854.,  742248.,  758484.,  742860.,  759114.,
      743472.,  759744.,  1084923., 1109142., 1085814., 1110060., 1086705.,
      1110978., 1087596., 1111896., 1088487., 1112814., 1089378., 1113732.,
      1090269., 1114650., 1091160., 1115568., 1092051., 1116486., 1092942.,
      1117404., 1093833., 1118322., 1094724., 1119240., 709200.,  725418.,
      709776.,  726012.,  710352.,  726606.,  710928.,  727200.,  711504.,
      727794.,  712080.,  728388.,  712656.,  728982.,  713232.,  729576.,
      766116.,  783054.,  766728.,  783684.,  767340.,  784314.,  767952.,
      784944.,  768564.,  785574.,  769176.,  786204.,  769788.,  786834.,
      770400.,  787464.,  1124127., 1149534., 1125018., 1150452., 1125909.,
      1151370., 1126800., 1152288., 1127691., 1153206., 1128582., 1154124.,
      1129473., 1155042., 1130364., 1155960., 1131255., 1156878., 1132146.,
      1157796., 1133037., 1158714., 1133928., 1159632., 734544.,  751554.,
      735120.,  752148.,  735696.,  752742.,  736272.,  753336.,  736848.,
      753930.,  737424.,  754524.,  738000.,  755118.,  738576.,  755712.,
      793044.,  810774.,  793656.,  811404.,  794268.,  812034.,  794880.,
      812664.,  795492.,  813294.,  796104.,  813924.,  796716.,  814554.,
      797328.,  815184.,  1163331., 1189926., 1164222., 1190844., 1165113.,
      1191762., 1166004., 1192680., 1166895., 1193598., 1167786., 1194516.,
      1168677., 1195434., 1169568., 1196352., 1170459., 1197270., 1171350.,
      1198188., 1172241., 1199106., 1173132., 1200024., 759888.,  777690.,
      760464.,  778284.,  761040.,  778878.,  761616.,  779472.,  762192.,
      780066.,  762768.,  780660.,  763344.,  781254.,  763920.,  781848.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x11x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      144304., 152860., 144448., 153016., 144592., 153172., 144736., 153328.,
      144880., 153484., 145024., 153640., 145168., 153796., 145312., 153952.,
      145456., 154108., 145600., 154264., 145744., 154420., 145888., 154576.,
      146032., 154732., 146176., 154888., 146320., 155044., 146464., 155200.,
      146608., 155356., 146752., 155512., 146896., 155668., 147040., 155824.,
      147184., 155980., 147328., 156136., 147472., 156292., 147616., 156448.,
      147760., 156604., 147904., 156760., 148048., 156916., 148192., 157072.,
      150640., 159724., 150784., 159880., 150928., 160036., 151072., 160192.,
      151216., 160348., 151360., 160504., 151504., 160660., 151648., 160816.,
      151792., 160972., 151936., 161128., 152080., 161284., 152224., 161440.,
      152368., 161596., 152512., 161752., 152656., 161908., 152800., 162064.,
      152944., 162220., 153088., 162376., 153232., 162532., 153376., 162688.,
      153520., 162844., 153664., 163000., 153808., 163156., 153952., 163312.,
      154096., 163468., 154240., 163624., 154384., 163780., 154528., 163936.,
      156976., 166588., 157120., 166744., 157264., 166900., 157408., 167056.,
      157552., 167212., 157696., 167368., 157840., 167524., 157984., 167680.,
      158128., 167836., 158272., 167992., 158416., 168148., 158560., 168304.,
      158704., 168460., 158848., 168616., 158992., 168772., 159136., 168928.,
      159280., 169084., 159424., 169240., 159568., 169396., 159712., 169552.,
      159856., 169708., 160000., 169864., 160144., 170020., 160288., 170176.,
      160432., 170332., 160576., 170488., 160720., 170644., 160864., 170800.,
      163312., 173452., 163456., 173608., 163600., 173764., 163744., 173920.,
      163888., 174076., 164032., 174232., 164176., 174388., 164320., 174544.,
      164464., 174700., 164608., 174856., 164752., 175012., 164896., 175168.,
      165040., 175324., 165184., 175480., 165328., 175636., 165472., 175792.,
      165616., 175948., 165760., 176104., 165904., 176260., 166048., 176416.,
      166192., 176572., 166336., 176728., 166480., 176884., 166624., 177040.,
      166768., 177196., 166912., 177352., 167056., 177508., 167200., 177664.,
      169648., 180316., 169792., 180472., 169936., 180628., 170080., 180784.,
      170224., 180940., 170368., 181096., 170512., 181252., 170656., 181408.,
      170800., 181564., 170944., 181720., 171088., 181876., 171232., 182032.,
      171376., 182188., 171520., 182344., 171664., 182500., 171808., 182656.,
      171952., 182812., 172096., 182968., 172240., 183124., 172384., 183280.,
      172528., 183436., 172672., 183592., 172816., 183748., 172960., 183904.,
      173104., 184060., 173248., 184216., 173392., 184372., 173536., 184528.,
      175984., 187180., 176128., 187336., 176272., 187492., 176416., 187648.,
      176560., 187804., 176704., 187960., 176848., 188116., 176992., 188272.,
      177136., 188428., 177280., 188584., 177424., 188740., 177568., 188896.,
      177712., 189052., 177856., 189208., 178000., 189364., 178144., 189520.,
      178288., 189676., 178432., 189832., 178576., 189988., 178720., 190144.,
      178864., 190300., 179008., 190456., 179152., 190612., 179296., 190768.,
      179440., 190924., 179584., 191080., 179728., 191236., 179872., 191392.,
      182320., 194044., 182464., 194200., 182608., 194356., 182752., 194512.,
      182896., 194668., 183040., 194824., 183184., 194980., 183328., 195136.,
      183472., 195292., 183616., 195448., 183760., 195604., 183904., 195760.,
      184048., 195916., 184192., 196072., 184336., 196228., 184480., 196384.,
      184624., 196540., 184768., 196696., 184912., 196852., 185056., 197008.,
      185200., 197164., 185344., 197320., 185488., 197476., 185632., 197632.,
      185776., 197788., 185920., 197944., 186064., 198100., 186208., 198256.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1655982., 1672128., 1688274., 1704420., 1657404., 1673568., 1689732.,
      1705896., 1658826., 1675008., 1691190., 1707372., 1660248., 1676448.,
      1692648., 1708848., 1661670., 1677888., 1694106., 1710324., 1663092.,
      1679328., 1695564., 1711800., 1664514., 1680768., 1697022., 1713276.,
      1665936., 1682208., 1698480., 1714752., 2436255., 2460474., 2484693.,
      2508912., 2438334., 2462580., 2486826., 2511072., 2440413., 2464686.,
      2488959., 2513232., 2442492., 2466792., 2491092., 2515392., 2444571.,
      2468898., 2493225., 2517552., 2446650., 2471004., 2495358., 2519712.,
      2448729., 2473110., 2497491., 2521872., 2450808., 2475216., 2499624.,
      2524032., 2452887., 2477322., 2501757., 2526192., 2454966., 2479428.,
      2503890., 2528352., 2457045., 2481534., 2506023., 2530512., 2459124.,
      2483640., 2508156., 2532672., 1596798., 1613016., 1629234., 1645452.,
      1598148., 1614384., 1630620., 1646856., 1599498., 1615752., 1632006.,
      1648260., 1600848., 1617120., 1633392., 1649664., 1602198., 1618488.,
      1634778., 1651068., 1603548., 1619856., 1636164., 1652472., 1604898.,
      1621224., 1637550., 1653876., 1606248., 1622592., 1638936., 1655280.,
      1718550., 1735488., 1752426., 1769364., 1719972., 1736928., 1753884.,
      1770840., 1721394., 1738368., 1755342., 1772316., 1722816., 1739808.,
      1756800., 1773792., 1724238., 1741248., 1758258., 1775268., 1725660.,
      1742688., 1759716., 1776744., 1727082., 1744128., 1761174., 1778220.,
      1728504., 1745568., 1762632., 1779696., 2527731., 2553138., 2578545.,
      2603952., 2529810., 2555244., 2580678., 2606112., 2531889., 2557350.,
      2582811., 2608272., 2533968., 2559456., 2584944., 2610432., 2536047.,
      2561562., 2587077., 2612592., 2538126., 2563668., 2589210., 2614752.,
      2540205., 2565774., 2591343., 2616912., 2542284., 2567880., 2593476.,
      2619072., 2544363., 2569986., 2595609., 2621232., 2546442., 2572092.,
      2597742., 2623392., 2548521., 2574198., 2599875., 2625552., 2550600.,
      2576304., 2602008., 2627712., 1656198., 1673208., 1690218., 1707228.,
      1657548., 1674576., 1691604., 1708632., 1658898., 1675944., 1692990.,
      1710036., 1660248., 1677312., 1694376., 1711440., 1661598., 1678680.,
      1695762., 1712844., 1662948., 1680048., 1697148., 1714248., 1664298.,
      1681416., 1698534., 1715652., 1665648., 1682784., 1699920., 1717056.,
      2108376., 2129904., 2151432., 2172960., 2110128., 2131680., 2153232.,
      2174784., 2111880., 2133456., 2155032., 2176608., 2113632., 2135232.,
      2156832., 2178432., 2115384., 2137008., 2158632., 2180256., 2117136.,
      2138784., 2160432., 2182080., 2118888., 2140560., 2162232., 2183904.,
      2120640., 2142336., 2164032., 2185728., 3098940., 3131232., 3163524.,
      3195816., 3101496., 3133824., 3166152., 3198480., 3104052., 3136416.,
      3168780., 3201144., 3106608., 3139008., 3171408., 3203808., 3109164.,
      3141600., 3174036., 3206472., 3111720., 3144192., 3176664., 3209136.,
      3114276., 3146784., 3179292., 3211800., 3116832., 3149376., 3181920.,
      3214464., 3119388., 3151968., 3184548., 3217128., 3121944., 3154560.,
      3187176., 3219792., 3124500., 3157152., 3189804., 3222456., 3127056.,
      3159744., 3192432., 3225120., 2028888., 2050512., 2072136., 2093760.,
      2030544., 2052192., 2073840., 2095488., 2032200., 2053872., 2075544.,
      2097216., 2033856., 2055552., 2077248., 2098944., 2035512., 2057232.,
      2078952., 2100672., 2037168., 2058912., 2080656., 2102400., 2038824.,
      2060592., 2082360., 2104128., 2040480., 2062272., 2084064., 2105856.,
      2185464., 2208048., 2230632., 2253216., 2187216., 2209824., 2232432.,
      2255040., 2188968., 2211600., 2234232., 2256864., 2190720., 2213376.,
      2236032., 2258688., 2192472., 2215152., 2237832., 2260512., 2194224.,
      2216928., 2239632., 2262336., 2195976., 2218704., 2241432., 2264160.,
      2197728., 2220480., 2243232., 2265984., 3211404., 3245280., 3279156.,
      3313032., 3213960., 3247872., 3281784., 3315696., 3216516., 3250464.,
      3284412., 3318360., 3219072., 3253056., 3287040., 3321024., 3221628.,
      3255648., 3289668., 3323688., 3224184., 3258240., 3292296., 3326352.,
      3226740., 3260832., 3294924., 3329016., 3229296., 3263424., 3297552.,
      3331680., 3231852., 3266016., 3300180., 3334344., 3234408., 3268608.,
      3302808., 3337008., 3236964., 3271200., 3305436., 3339672., 3239520.,
      3273792., 3308064., 3342336., 2101752., 2124432., 2147112., 2169792.,
      2103408., 2126112., 2148816., 2171520., 2105064., 2127792., 2150520.,
      2173248., 2106720., 2129472., 2152224., 2174976., 2108376., 2131152.,
      2153928., 2176704., 2110032., 2132832., 2155632., 2178432., 2111688.,
      2134512., 2157336., 2180160., 2113344., 2136192., 2159040., 2181888.,
      1462230., 1478376., 1494522., 1510668., 1463436., 1479600., 1495764.,
      1511928., 1464642., 1480824., 1497006., 1513188., 1465848., 1482048.,
      1498248., 1514448., 1467054., 1483272., 1499490., 1515708., 1468260.,
      1484496., 1500732., 1516968., 1469466., 1485720., 1501974., 1518228.,
      1470672., 1486944., 1503216., 1519488., 2145627., 2169846., 2194065.,
      2218284., 2147382., 2171628., 2195874., 2220120., 2149137., 2173410.,
      2197683., 2221956., 2150892., 2175192., 2199492., 2223792., 2152647.,
      2176974., 2201301., 2225628., 2154402., 2178756., 2203110., 2227464.,
      2156157., 2180538., 2204919., 2229300., 2157912., 2182320., 2206728.,
      2231136., 2159667., 2184102., 2208537., 2232972., 2161422., 2185884.,
      2210346., 2234808., 2163177., 2187666., 2212155., 2236644., 2164932.,
      2189448., 2213964., 2238480., 1402182., 1418400., 1434618., 1450836.,
      1403316., 1419552., 1435788., 1452024., 1404450., 1420704., 1436958.,
      1453212., 1405584., 1421856., 1438128., 1454400., 1406718., 1423008.,
      1439298., 1455588., 1407852., 1424160., 1440468., 1456776., 1408986.,
      1425312., 1441638., 1457964., 1410120., 1426464., 1442808., 1459152.,
      1515294., 1532232., 1549170., 1566108., 1516500., 1533456., 1550412.,
      1567368., 1517706., 1534680., 1551654., 1568628., 1518912., 1535904.,
      1552896., 1569888., 1520118., 1537128., 1554138., 1571148., 1521324.,
      1538352., 1555380., 1572408., 1522530., 1539576., 1556622., 1573668.,
      1523736., 1540800., 1557864., 1574928., 2222847., 2248254., 2273661.,
      2299068., 2224602., 2250036., 2275470., 2300904., 2226357., 2251818.,
      2277279., 2302740., 2228112., 2253600., 2279088., 2304576., 2229867.,
      2255382., 2280897., 2306412., 2231622., 2257164., 2282706., 2308248.,
      2233377., 2258946., 2284515., 2310084., 2235132., 2260728., 2286324.,
      2311920., 2236887., 2262510., 2288133., 2313756., 2238642., 2264292.,
      2289942., 2315592., 2240397., 2266074., 2291751., 2317428., 2242152.,
      2267856., 2293560., 2319264., 1452078., 1469088., 1486098., 1503108.,
      1453212., 1470240., 1487268., 1504296., 1454346., 1471392., 1488438.,
      1505484., 1455480., 1472544., 1489608., 1506672., 1456614., 1473696.,
      1490778., 1507860., 1457748., 1474848., 1491948., 1509048., 1458882.,
      1476000., 1493118., 1510236., 1460016., 1477152., 1494288., 1511424.,
      1568358., 1586088., 1603818., 1621548., 1569564., 1587312., 1605060.,
      1622808., 1570770., 1588536., 1606302., 1624068., 1571976., 1589760.,
      1607544., 1625328., 1573182., 1590984., 1608786., 1626588., 1574388.,
      1592208., 1610028., 1627848., 1575594., 1593432., 1611270., 1629108.,
      1576800., 1594656., 1612512., 1630368., 2300067., 2326662., 2353257.,
      2379852., 2301822., 2328444., 2355066., 2381688., 2303577., 2330226.,
      2356875., 2383524., 2305332., 2332008., 2358684., 2385360., 2307087.,
      2333790., 2360493., 2387196., 2308842., 2335572., 2362302., 2389032.,
      2310597., 2337354., 2364111., 2390868., 2312352., 2339136., 2365920.,
      2392704., 2314107., 2340918., 2367729., 2394540., 2315862., 2342700.,
      2369538., 2396376., 2317617., 2344482., 2371347., 2398212., 2319372.,
      2346264., 2373156., 2400048., 1501974., 1519776., 1537578., 1555380.,
      1503108., 1520928., 1538748., 1556568., 1504242., 1522080., 1539918.,
      1557756., 1505376., 1523232., 1541088., 1558944., 1506510., 1524384.,
      1542258., 1560132., 1507644., 1525536., 1543428., 1561320., 1508778.,
      1526688., 1544598., 1562508., 1509912., 1527840., 1545768., 1563696.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x11x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      280052., 288608., 297164., 305720., 280328., 288896., 297464., 306032.,
      280604., 289184., 297764., 306344., 280880., 289472., 298064., 306656.,
      281156., 289760., 298364., 306968., 281432., 290048., 298664., 307280.,
      281708., 290336., 298964., 307592., 281984., 290624., 299264., 307904.,
      282260., 290912., 299564., 308216., 282536., 291200., 299864., 308528.,
      282812., 291488., 300164., 308840., 283088., 291776., 300464., 309152.,
      283364., 292064., 300764., 309464., 283640., 292352., 301064., 309776.,
      283916., 292640., 301364., 310088., 284192., 292928., 301664., 310400.,
      284468., 293216., 301964., 310712., 284744., 293504., 302264., 311024.,
      285020., 293792., 302564., 311336., 285296., 294080., 302864., 311648.,
      285572., 294368., 303164., 311960., 285848., 294656., 303464., 312272.,
      286124., 294944., 303764., 312584., 286400., 295232., 304064., 312896.,
      286676., 295520., 304364., 313208., 286952., 295808., 304664., 313520.,
      287228., 296096., 304964., 313832., 287504., 296384., 305264., 314144.,
      292196., 301280., 310364., 319448., 292472., 301568., 310664., 319760.,
      292748., 301856., 310964., 320072., 293024., 302144., 311264., 320384.,
      293300., 302432., 311564., 320696., 293576., 302720., 311864., 321008.,
      293852., 303008., 312164., 321320., 294128., 303296., 312464., 321632.,
      294404., 303584., 312764., 321944., 294680., 303872., 313064., 322256.,
      294956., 304160., 313364., 322568., 295232., 304448., 313664., 322880.,
      295508., 304736., 313964., 323192., 295784., 305024., 314264., 323504.,
      296060., 305312., 314564., 323816., 296336., 305600., 314864., 324128.,
      296612., 305888., 315164., 324440., 296888., 306176., 315464., 324752.,
      297164., 306464., 315764., 325064., 297440., 306752., 316064., 325376.,
      297716., 307040., 316364., 325688., 297992., 307328., 316664., 326000.,
      298268., 307616., 316964., 326312., 298544., 307904., 317264., 326624.,
      298820., 308192., 317564., 326936., 299096., 308480., 317864., 327248.,
      299372., 308768., 318164., 327560., 299648., 309056., 318464., 327872.,
      304340., 313952., 323564., 333176., 304616., 314240., 323864., 333488.,
      304892., 314528., 324164., 333800., 305168., 314816., 324464., 334112.,
      305444., 315104., 324764., 334424., 305720., 315392., 325064., 334736.,
      305996., 315680., 325364., 335048., 306272., 315968., 325664., 335360.,
      306548., 316256., 325964., 335672., 306824., 316544., 326264., 335984.,
      307100., 316832., 326564., 336296., 307376., 317120., 326864., 336608.,
      307652., 317408., 327164., 336920., 307928., 317696., 327464., 337232.,
      308204., 317984., 327764., 337544., 308480., 318272., 328064., 337856.,
      308756., 318560., 328364., 338168., 309032., 318848., 328664., 338480.,
      309308., 319136., 328964., 338792., 309584., 319424., 329264., 339104.,
      309860., 319712., 329564., 339416., 310136., 320000., 329864., 339728.,
      310412., 320288., 330164., 340040., 310688., 320576., 330464., 340352.,
      310964., 320864., 330764., 340664., 311240., 321152., 331064., 340976.,
      311516., 321440., 331364., 341288., 311792., 321728., 331664., 341600.,
      316484., 326624., 336764., 346904., 316760., 326912., 337064., 347216.,
      317036., 327200., 337364., 347528., 317312., 327488., 337664., 347840.,
      317588., 327776., 337964., 348152., 317864., 328064., 338264., 348464.,
      318140., 328352., 338564., 348776., 318416., 328640., 338864., 349088.,
      318692., 328928., 339164., 349400., 318968., 329216., 339464., 349712.,
      319244., 329504., 339764., 350024., 319520., 329792., 340064., 350336.,
      319796., 330080., 340364., 350648., 320072., 330368., 340664., 350960.,
      320348., 330656., 340964., 351272., 320624., 330944., 341264., 351584.,
      320900., 331232., 341564., 351896., 321176., 331520., 341864., 352208.,
      321452., 331808., 342164., 352520., 321728., 332096., 342464., 352832.,
      322004., 332384., 342764., 353144., 322280., 332672., 343064., 353456.,
      322556., 332960., 343364., 353768., 322832., 333248., 343664., 354080.,
      323108., 333536., 343964., 354392., 323384., 333824., 344264., 354704.,
      323660., 334112., 344564., 355016., 323936., 334400., 344864., 355328.,
      328628., 339296., 349964., 360632., 328904., 339584., 350264., 360944.,
      329180., 339872., 350564., 361256., 329456., 340160., 350864., 361568.,
      329732., 340448., 351164., 361880., 330008., 340736., 351464., 362192.,
      330284., 341024., 351764., 362504., 330560., 341312., 352064., 362816.,
      330836., 341600., 352364., 363128., 331112., 341888., 352664., 363440.,
      331388., 342176., 352964., 363752., 331664., 342464., 353264., 364064.,
      331940., 342752., 353564., 364376., 332216., 343040., 353864., 364688.,
      332492., 343328., 354164., 365000., 332768., 343616., 354464., 365312.,
      333044., 343904., 354764., 365624., 333320., 344192., 355064., 365936.,
      333596., 344480., 355364., 366248., 333872., 344768., 355664., 366560.,
      334148., 345056., 355964., 366872., 334424., 345344., 356264., 367184.,
      334700., 345632., 356564., 367496., 334976., 345920., 356864., 367808.,
      335252., 346208., 357164., 368120., 335528., 346496., 357464., 368432.,
      335804., 346784., 357764., 368744., 336080., 347072., 358064., 369056.,
      340772., 351968., 363164., 374360., 341048., 352256., 363464., 374672.,
      341324., 352544., 363764., 374984., 341600., 352832., 364064., 375296.,
      341876., 353120., 364364., 375608., 342152., 353408., 364664., 375920.,
      342428., 353696., 364964., 376232., 342704., 353984., 365264., 376544.,
      342980., 354272., 365564., 376856., 343256., 354560., 365864., 377168.,
      343532., 354848., 366164., 377480., 343808., 355136., 366464., 377792.,
      344084., 355424., 366764., 378104., 344360., 355712., 367064., 378416.,
      344636., 356000., 367364., 378728., 344912., 356288., 367664., 379040.,
      345188., 356576., 367964., 379352., 345464., 356864., 368264., 379664.,
      345740., 357152., 368564., 379976., 346016., 357440., 368864., 380288.,
      346292., 357728., 369164., 380600., 346568., 358016., 369464., 380912.,
      346844., 358304., 369764., 381224., 347120., 358592., 370064., 381536.,
      347396., 358880., 370364., 381848., 347672., 359168., 370664., 382160.,
      347948., 359456., 370964., 382472., 348224., 359744., 371264., 382784.,
      352916., 364640., 376364., 388088., 353192., 364928., 376664., 388400.,
      353468., 365216., 376964., 388712., 353744., 365504., 377264., 389024.,
      354020., 365792., 377564., 389336., 354296., 366080., 377864., 389648.,
      354572., 366368., 378164., 389960., 354848., 366656., 378464., 390272.,
      355124., 366944., 378764., 390584., 355400., 367232., 379064., 390896.,
      355676., 367520., 379364., 391208., 355952., 367808., 379664., 391520.,
      356228., 368096., 379964., 391832., 356504., 368384., 380264., 392144.,
      356780., 368672., 380564., 392456., 357056., 368960., 380864., 392768.,
      357332., 369248., 381164., 393080., 357608., 369536., 381464., 393392.,
      357884., 369824., 381764., 393704., 358160., 370112., 382064., 394016.,
      358436., 370400., 382364., 394328., 358712., 370688., 382664., 394640.,
      358988., 370976., 382964., 394952., 359264., 371264., 383264., 395264.,
      359540., 371552., 383564., 395576., 359816., 371840., 383864., 395888.,
      360092., 372128., 384164., 396200., 360368., 372416., 384464., 396512.};
  const std::array<int, 4> in_shape = {{3, 14, 11, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      116712., 171252., 171792., 172332., 172872., 112635., 112986.,
      121140., 177732., 178272., 178812., 179352., 116847., 117198.,
      148776., 218130., 218796., 219462., 220128., 143304., 143736.,
      154248., 226122., 226788., 227454., 228120., 148488., 148920.,
      103428., 151407., 151866., 152325., 152784., 99297.,  99594.,
      107208., 156915., 157374., 157833., 158292., 102861., 103158.,
      110988., 162423., 162882., 163341., 163800., 106425., 106722.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x12x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      20886., 20964., 21042., 21120., 21198., 21276., 21354., 21822., 21900.,
      21978., 22056., 22134., 22212., 22290., 22758., 22836., 22914., 22992.,
      23070., 23148., 23226., 23694., 23772., 23850., 23928., 24006., 24084.,
      24162., 24630., 24708., 24786., 24864., 24942., 25020., 25098., 25566.,
      25644., 25722., 25800., 25878., 25956., 26034., 26502., 26580., 26658.,
      26736., 26814., 26892., 26970.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      228996., 233424., 335889., 342504., 336942., 343584., 337995., 344664.,
      339048., 345744., 220824., 225270., 221508., 225972., 237636., 242280.,
      348525., 355464., 349578., 356544., 350631., 357624., 351684., 358704.,
      229032., 233694., 229716., 234396., 291648., 297552., 427440., 436260.,
      428736., 437592., 430032., 438924., 431328., 440256., 280680., 286608.,
      281520., 287472., 302304., 308496., 442992., 452244., 444288., 453576.,
      445584., 454908., 446880., 456240., 290760., 296976., 291600., 297840.,
      202428., 206856., 296199., 302814., 297090., 303732., 297981., 304650.,
      298872., 305568., 194148., 198594., 194724., 199188., 209772., 214416.,
      306891., 313830., 307782., 314748., 308673., 315666., 309564., 316584.,
      201060., 205722., 201636., 206316., 217116., 221976., 317583., 324846.,
      318474., 325764., 319365., 326682., 320256., 327600., 207972., 212850.,
      208548., 213444.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x12x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      39432., 41772., 39576., 41928., 39720., 42084., 39864., 42240., 40008.,
      42396., 40152., 42552., 40296., 42708., 41160., 43644., 41304., 43800.,
      41448., 43956., 41592., 44112., 41736., 44268., 41880., 44424., 42024.,
      44580., 42888., 45516., 43032., 45672., 43176., 45828., 43320., 45984.,
      43464., 46140., 43608., 46296., 43752., 46452., 44616., 47388., 44760.,
      47544., 44904., 47700., 45048., 47856., 45192., 48012., 45336., 48168.,
      45480., 48324., 46344., 49260., 46488., 49416., 46632., 49572., 46776.,
      49728., 46920., 49884., 47064., 50040., 47208., 50196., 48072., 51132.,
      48216., 51288., 48360., 51444., 48504., 51600., 48648., 51756., 48792.,
      51912., 48936., 52068., 49800., 53004., 49944., 53160., 50088., 53316.,
      50232., 53472., 50376., 53628., 50520., 53784., 50664., 53940.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      453564., 457992., 462420., 466848., 665163., 671778., 678393., 685008.,
      667242., 673884., 680526., 687168., 669321., 675990., 682659., 689328.,
      671400., 678096., 684792., 691488., 437202., 441648., 446094., 450540.,
      438552., 443016., 447480., 451944., 470628., 475272., 479916., 484560.,
      690111., 697050., 703989., 710928., 692190., 699156., 706122., 713088.,
      694269., 701262., 708255., 715248., 696348., 703368., 710388., 717408.,
      453402., 458064., 462726., 467388., 454752., 459432., 464112., 468792.,
      577392., 583296., 589200., 595104., 846060., 854880., 863700., 872520.,
      848616., 857472., 866328., 875184., 851172., 860064., 868956., 877848.,
      853728., 862656., 871584., 880512., 555432., 561360., 567288., 573216.,
      557088., 563040., 568992., 574944., 598416., 604608., 610800., 616992.,
      876732., 885984., 895236., 904488., 879288., 888576., 897864., 907152.,
      881844., 891168., 900492., 909816., 884400., 893760., 903120., 912480.,
      575304., 581520., 587736., 593952., 576960., 583200., 589440., 595680.,
      400428., 404856., 409284., 413712., 585783., 592398., 599013., 605628.,
      587538., 594180., 600822., 607464., 589293., 595962., 602631., 609300.,
      591048., 597744., 604440., 611136., 383850., 388296., 392742., 397188.,
      384984., 389448., 393912., 398376., 414900., 419544., 424188., 428832.,
      606843., 613782., 620721., 627660., 608598., 615564., 622530., 629496.,
      610353., 617346., 624339., 631332., 612108., 619128., 626148., 633168.,
      397458., 402120., 406782., 411444., 398592., 403272., 407952., 412632.,
      429372., 434232., 439092., 443952., 627903., 635166., 642429., 649692.,
      629658., 636948., 644238., 651528., 631413., 638730., 646047., 653364.,
      633168., 640512., 647856., 655200., 411066., 415944., 420822., 425700.,
      412200., 417096., 421992., 426888.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x12x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      76524., 78864.,  81204.,  83544.,  76800., 79152.,  81504.,  83856.,
      77076., 79440.,  81804.,  84168.,  77352., 79728.,  82104.,  84480.,
      77628., 80016.,  82404.,  84792.,  77904., 80304.,  82704.,  85104.,
      78180., 80592.,  83004.,  85416.,  79836., 82320.,  84804.,  87288.,
      80112., 82608.,  85104.,  87600.,  80388., 82896.,  85404.,  87912.,
      80664., 83184.,  85704.,  88224.,  80940., 83472.,  86004.,  88536.,
      81216., 83760.,  86304.,  88848.,  81492., 84048.,  86604.,  89160.,
      83148., 85776.,  88404.,  91032.,  83424., 86064.,  88704.,  91344.,
      83700., 86352.,  89004.,  91656.,  83976., 86640.,  89304.,  91968.,
      84252., 86928.,  89604.,  92280.,  84528., 87216.,  89904.,  92592.,
      84804., 87504.,  90204.,  92904.,  86460., 89232.,  92004.,  94776.,
      86736., 89520.,  92304.,  95088.,  87012., 89808.,  92604.,  95400.,
      87288., 90096.,  92904.,  95712.,  87564., 90384.,  93204.,  96024.,
      87840., 90672.,  93504.,  96336.,  88116., 90960.,  93804.,  96648.,
      89772., 92688.,  95604.,  98520.,  90048., 92976.,  95904.,  98832.,
      90324., 93264.,  96204.,  99144.,  90600., 93552.,  96504.,  99456.,
      90876., 93840.,  96804.,  99768.,  91152., 94128.,  97104.,  100080.,
      91428., 94416.,  97404.,  100392., 93084., 96144.,  99204.,  102264.,
      93360., 96432.,  99504.,  102576., 93636., 96720.,  99804.,  102888.,
      93912., 97008.,  100104., 103200., 94188., 97296.,  100404., 103512.,
      94464., 97584.,  100704., 103824., 94740., 97872.,  101004., 104136.,
      96396., 99600.,  102804., 106008., 96672., 99888.,  103104., 106320.,
      96948., 100176., 103404., 106632., 97224., 100464., 103704., 106944.,
      97500., 100752., 104004., 107256., 97776., 101040., 104304., 107568.,
      98052., 101328., 104604., 107880.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      233055., 233424., 341964., 342504., 343044., 343584., 344124., 344664.,
      345204., 345744., 224919., 225270., 225621., 225972., 241911., 242280.,
      354924., 355464., 356004., 356544., 357084., 357624., 358164., 358704.,
      233343., 233694., 234045., 234396., 297096., 297552., 435594., 436260.,
      436926., 437592., 438258., 438924., 439590., 440256., 286176., 286608.,
      287040., 287472., 308040., 308496., 451578., 452244., 452910., 453576.,
      454242., 454908., 455574., 456240., 296544., 296976., 297408., 297840.,
      206541., 206856., 302355., 302814., 303273., 303732., 304191., 304650.,
      305109., 305568., 198297., 198594., 198891., 199188., 214101., 214416.,
      313371., 313830., 314289., 314748., 315207., 315666., 316125., 316584.,
      205425., 205722., 206019., 206316., 221661., 221976., 324387., 324846.,
      325305., 325764., 326223., 326682., 327141., 327600., 212553., 212850.,
      213147., 213444.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x12x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41694., 41772., 41850., 41928., 42006., 42084., 42162., 42240., 42318.,
      42396., 42474., 42552., 42630., 42708., 43566., 43644., 43722., 43800.,
      43878., 43956., 44034., 44112., 44190., 44268., 44346., 44424., 44502.,
      44580., 45438., 45516., 45594., 45672., 45750., 45828., 45906., 45984.,
      46062., 46140., 46218., 46296., 46374., 46452., 47310., 47388., 47466.,
      47544., 47622., 47700., 47778., 47856., 47934., 48012., 48090., 48168.,
      48246., 48324., 49182., 49260., 49338., 49416., 49494., 49572., 49650.,
      49728., 49806., 49884., 49962., 50040., 50118., 50196., 51054., 51132.,
      51210., 51288., 51366., 51444., 51522., 51600., 51678., 51756., 51834.,
      51912., 51990., 52068., 52926., 53004., 53082., 53160., 53238., 53316.,
      53394., 53472., 53550., 53628., 53706., 53784., 53862., 53940.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      457272., 466110., 457992., 466848., 670725., 683928., 671778., 685008.,
      672831., 686088., 673884., 687168., 674937., 688248., 675990., 689328.,
      677043., 690408., 678096., 691488., 440964., 449838., 441648., 450540.,
      442332., 451242., 443016., 451944., 474552., 483822., 475272., 484560.,
      695997., 709848., 697050., 710928., 698103., 712008., 699156., 713088.,
      700209., 714168., 701262., 715248., 702315., 716328., 703368., 717408.,
      457380., 466686., 458064., 467388., 458748., 468090., 459432., 468792.,
      582408., 594192., 583296., 595104., 853584., 871188., 854880., 872520.,
      856176., 873852., 857472., 875184., 858768., 876516., 860064., 877848.,
      861360., 879180., 862656., 880512., 560520., 572352., 561360., 573216.,
      562200., 574080., 563040., 574944., 603720., 616080., 604608., 616992.,
      884688., 903156., 885984., 904488., 887280., 905820., 888576., 907152.,
      889872., 908484., 891168., 909816., 892464., 911148., 893760., 912480.,
      580680., 593088., 581520., 593952., 582360., 594816., 583200., 595680.,
      404244., 413082., 404856., 413712., 591507., 604710., 592398., 605628.,
      593289., 606546., 594180., 607464., 595071., 608382., 595962., 609300.,
      596853., 610218., 597744., 611136., 387720., 396594., 388296., 397188.,
      388872., 397782., 389448., 398376., 418932., 428202., 419544., 428832.,
      612891., 626742., 613782., 627660., 614673., 628578., 615564., 629496.,
      616455., 630414., 617346., 631332., 618237., 632250., 619128., 633168.,
      401544., 410850., 402120., 411444., 402696., 412038., 403272., 412632.,
      433620., 443322., 434232., 443952., 634275., 648774., 635166., 649692.,
      636057., 650610., 636948., 651528., 637839., 652446., 638730., 653364.,
      639621., 654282., 640512., 655200., 415368., 425106., 415944., 425700.,
      416520., 426294., 417096., 426888.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x12x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      78720.,  83388.,  78864.,  83544.,  79008.,  83700.,  79152.,  83856.,
      79296.,  84012.,  79440.,  84168.,  79584.,  84324.,  79728.,  84480.,
      79872.,  84636.,  80016.,  84792.,  80160.,  84948.,  80304.,  85104.,
      80448.,  85260.,  80592.,  85416.,  82176.,  87132.,  82320.,  87288.,
      82464.,  87444.,  82608.,  87600.,  82752.,  87756.,  82896.,  87912.,
      83040.,  88068.,  83184.,  88224.,  83328.,  88380.,  83472.,  88536.,
      83616.,  88692.,  83760.,  88848.,  83904.,  89004.,  84048.,  89160.,
      85632.,  90876.,  85776.,  91032.,  85920.,  91188.,  86064.,  91344.,
      86208.,  91500.,  86352.,  91656.,  86496.,  91812.,  86640.,  91968.,
      86784.,  92124.,  86928.,  92280.,  87072.,  92436.,  87216.,  92592.,
      87360.,  92748.,  87504.,  92904.,  89088.,  94620.,  89232.,  94776.,
      89376.,  94932.,  89520.,  95088.,  89664.,  95244.,  89808.,  95400.,
      89952.,  95556.,  90096.,  95712.,  90240.,  95868.,  90384.,  96024.,
      90528.,  96180.,  90672.,  96336.,  90816.,  96492.,  90960.,  96648.,
      92544.,  98364.,  92688.,  98520.,  92832.,  98676.,  92976.,  98832.,
      93120.,  98988.,  93264.,  99144.,  93408.,  99300.,  93552.,  99456.,
      93696.,  99612.,  93840.,  99768.,  93984.,  99924.,  94128.,  100080.,
      94272.,  100236., 94416.,  100392., 96000.,  102108., 96144.,  102264.,
      96288.,  102420., 96432.,  102576., 96576.,  102732., 96720.,  102888.,
      96864.,  103044., 97008.,  103200., 97152.,  103356., 97296.,  103512.,
      97440.,  103668., 97584.,  103824., 97728.,  103980., 97872.,  104136.,
      99456.,  105852., 99600.,  106008., 99744.,  106164., 99888.,  106320.,
      100032., 106476., 100176., 106632., 100320., 106788., 100464., 106944.,
      100608., 107100., 100752., 107256., 100896., 107412., 101040., 107568.,
      101184., 107724., 101328., 107880.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      905706.,  914544.,  923382.,  932220.,  907128.,  915984.,  924840.,
      933696.,  1328247., 1341450., 1354653., 1367856., 1330326., 1343556.,
      1356786., 1370016., 1332405., 1345662., 1358919., 1372176., 1334484.,
      1347768., 1361052., 1374336., 1336563., 1349874., 1363185., 1376496.,
      1338642., 1351980., 1365318., 1378656., 1340721., 1354086., 1367451.,
      1380816., 1342800., 1356192., 1369584., 1382976., 873054.,  881928.,
      890802.,  899676.,  874404.,  883296.,  892188.,  901080.,  875754.,
      884664.,  893574.,  902484.,  877104.,  886032.,  894960.,  903888.,
      939834.,  949104.,  958374.,  967644.,  941256.,  950544.,  959832.,
      969120.,  1378143., 1391994., 1405845., 1419696., 1380222., 1394100.,
      1407978., 1421856., 1382301., 1396206., 1410111., 1424016., 1384380.,
      1398312., 1412244., 1426176., 1386459., 1400418., 1414377., 1428336.,
      1388538., 1402524., 1416510., 1430496., 1390617., 1404630., 1418643.,
      1432656., 1392696., 1406736., 1420776., 1434816., 905454.,  914760.,
      924066.,  933372.,  906804.,  916128.,  925452.,  934776.,  908154.,
      917496.,  926838.,  936180.,  909504.,  918864.,  928224.,  937584.,
      1153032., 1164816., 1176600., 1188384., 1154784., 1166592., 1178400.,
      1190208., 1689564., 1707168., 1724772., 1742376., 1692120., 1709760.,
      1727400., 1745040., 1694676., 1712352., 1730028., 1747704., 1697232.,
      1714944., 1732656., 1750368., 1699788., 1717536., 1735284., 1753032.,
      1702344., 1720128., 1737912., 1755696., 1704900., 1722720., 1740540.,
      1758360., 1707456., 1725312., 1743168., 1761024., 1109208., 1121040.,
      1132872., 1144704., 1110864., 1122720., 1134576., 1146432., 1112520.,
      1124400., 1136280., 1148160., 1114176., 1126080., 1137984., 1149888.,
      1195080., 1207440., 1219800., 1232160., 1196832., 1209216., 1221600.,
      1233984., 1750908., 1769376., 1787844., 1806312., 1753464., 1771968.,
      1790472., 1808976., 1756020., 1774560., 1793100., 1811640., 1758576.,
      1777152., 1795728., 1814304., 1761132., 1779744., 1798356., 1816968.,
      1763688., 1782336., 1800984., 1819632., 1766244., 1784928., 1803612.,
      1822296., 1768800., 1787520., 1806240., 1824960., 1148952., 1161360.,
      1173768., 1186176., 1150608., 1163040., 1175472., 1187904., 1152264.,
      1164720., 1177176., 1189632., 1153920., 1166400., 1178880., 1191360.,
      799650.,  808488.,  817326.,  826164.,  800856.,  809712.,  818568.,
      827424.,  1169811., 1183014., 1196217., 1209420., 1171566., 1184796.,
      1198026., 1211256., 1173321., 1186578., 1199835., 1213092., 1175076.,
      1188360., 1201644., 1214928., 1176831., 1190142., 1203453., 1216764.,
      1178586., 1191924., 1205262., 1218600., 1180341., 1193706., 1207071.,
      1220436., 1182096., 1195488., 1208880., 1222272., 766566.,  775440.,
      784314.,  793188.,  767700.,  776592.,  785484.,  794376.,  768834.,
      777744.,  786654.,  795564.,  769968.,  778896.,  787824.,  796752.,
      828594.,  837864.,  847134.,  856404.,  829800.,  839088.,  848376.,
      857664.,  1211931., 1225782., 1239633., 1253484., 1213686., 1227564.,
      1241442., 1255320., 1215441., 1229346., 1243251., 1257156., 1217196.,
      1231128., 1245060., 1258992., 1218951., 1232910., 1246869., 1260828.,
      1220706., 1234692., 1248678., 1262664., 1222461., 1236474., 1250487.,
      1264500., 1224216., 1238256., 1252296., 1266336., 793782.,  803088.,
      812394.,  821700.,  794916.,  804240.,  813564.,  822888.,  796050.,
      805392.,  814734.,  824076.,  797184.,  806544.,  815904.,  825264.,
      857538.,  867240.,  876942.,  886644.,  858744.,  868464.,  878184.,
      887904.,  1254051., 1268550., 1283049., 1297548., 1255806., 1270332.,
      1284858., 1299384., 1257561., 1272114., 1286667., 1301220., 1259316.,
      1273896., 1288476., 1303056., 1261071., 1275678., 1290285., 1304892.,
      1262826., 1277460., 1292094., 1306728., 1264581., 1279242., 1293903.,
      1308564., 1266336., 1281024., 1295712., 1310400., 820998.,  830736.,
      840474.,  850212.,  822132.,  831888.,  841644.,  851400.,  823266.,
      833040.,  842814.,  852588.,  824400.,  834192.,  843984.,  853776.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x12x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      152772., 157440., 162108., 166776., 153048., 157728., 162408., 167088.,
      153324., 158016., 162708., 167400., 153600., 158304., 163008., 167712.,
      153876., 158592., 163308., 168024., 154152., 158880., 163608., 168336.,
      154428., 159168., 163908., 168648., 154704., 159456., 164208., 168960.,
      154980., 159744., 164508., 169272., 155256., 160032., 164808., 169584.,
      155532., 160320., 165108., 169896., 155808., 160608., 165408., 170208.,
      156084., 160896., 165708., 170520., 156360., 161184., 166008., 170832.,
      159396., 164352., 169308., 174264., 159672., 164640., 169608., 174576.,
      159948., 164928., 169908., 174888., 160224., 165216., 170208., 175200.,
      160500., 165504., 170508., 175512., 160776., 165792., 170808., 175824.,
      161052., 166080., 171108., 176136., 161328., 166368., 171408., 176448.,
      161604., 166656., 171708., 176760., 161880., 166944., 172008., 177072.,
      162156., 167232., 172308., 177384., 162432., 167520., 172608., 177696.,
      162708., 167808., 172908., 178008., 162984., 168096., 173208., 178320.,
      166020., 171264., 176508., 181752., 166296., 171552., 176808., 182064.,
      166572., 171840., 177108., 182376., 166848., 172128., 177408., 182688.,
      167124., 172416., 177708., 183000., 167400., 172704., 178008., 183312.,
      167676., 172992., 178308., 183624., 167952., 173280., 178608., 183936.,
      168228., 173568., 178908., 184248., 168504., 173856., 179208., 184560.,
      168780., 174144., 179508., 184872., 169056., 174432., 179808., 185184.,
      169332., 174720., 180108., 185496., 169608., 175008., 180408., 185808.,
      172644., 178176., 183708., 189240., 172920., 178464., 184008., 189552.,
      173196., 178752., 184308., 189864., 173472., 179040., 184608., 190176.,
      173748., 179328., 184908., 190488., 174024., 179616., 185208., 190800.,
      174300., 179904., 185508., 191112., 174576., 180192., 185808., 191424.,
      174852., 180480., 186108., 191736., 175128., 180768., 186408., 192048.,
      175404., 181056., 186708., 192360., 175680., 181344., 187008., 192672.,
      175956., 181632., 187308., 192984., 176232., 181920., 187608., 193296.,
      179268., 185088., 190908., 196728., 179544., 185376., 191208., 197040.,
      179820., 185664., 191508., 197352., 180096., 185952., 191808., 197664.,
      180372., 186240., 192108., 197976., 180648., 186528., 192408., 198288.,
      180924., 186816., 192708., 198600., 181200., 187104., 193008., 198912.,
      181476., 187392., 193308., 199224., 181752., 187680., 193608., 199536.,
      182028., 187968., 193908., 199848., 182304., 188256., 194208., 200160.,
      182580., 188544., 194508., 200472., 182856., 188832., 194808., 200784.,
      185892., 192000., 198108., 204216., 186168., 192288., 198408., 204528.,
      186444., 192576., 198708., 204840., 186720., 192864., 199008., 205152.,
      186996., 193152., 199308., 205464., 187272., 193440., 199608., 205776.,
      187548., 193728., 199908., 206088., 187824., 194016., 200208., 206400.,
      188100., 194304., 200508., 206712., 188376., 194592., 200808., 207024.,
      188652., 194880., 201108., 207336., 188928., 195168., 201408., 207648.,
      189204., 195456., 201708., 207960., 189480., 195744., 202008., 208272.,
      192516., 198912., 205308., 211704., 192792., 199200., 205608., 212016.,
      193068., 199488., 205908., 212328., 193344., 199776., 206208., 212640.,
      193620., 200064., 206508., 212952., 193896., 200352., 206808., 213264.,
      194172., 200640., 207108., 213576., 194448., 200928., 207408., 213888.,
      194724., 201216., 207708., 214200., 195000., 201504., 208008., 214512.,
      195276., 201792., 208308., 214824., 195552., 202080., 208608., 215136.,
      195828., 202368., 208908., 215448., 196104., 202656., 209208., 215760.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      465741., 466110., 466479., 466848., 683388., 683928., 684468., 685008.,
      685548., 686088., 686628., 687168., 687708., 688248., 688788., 689328.,
      689868., 690408., 690948., 691488., 449487., 449838., 450189., 450540.,
      450891., 451242., 451593., 451944., 483453., 483822., 484191., 484560.,
      709308., 709848., 710388., 710928., 711468., 712008., 712548., 713088.,
      713628., 714168., 714708., 715248., 715788., 716328., 716868., 717408.,
      466335., 466686., 467037., 467388., 467739., 468090., 468441., 468792.,
      593736., 594192., 594648., 595104., 870522., 871188., 871854., 872520.,
      873186., 873852., 874518., 875184., 875850., 876516., 877182., 877848.,
      878514., 879180., 879846., 880512., 571920., 572352., 572784., 573216.,
      573648., 574080., 574512., 574944., 615624., 616080., 616536., 616992.,
      902490., 903156., 903822., 904488., 905154., 905820., 906486., 907152.,
      907818., 908484., 909150., 909816., 910482., 911148., 911814., 912480.,
      592656., 593088., 593520., 593952., 594384., 594816., 595248., 595680.,
      412767., 413082., 413397., 413712., 604251., 604710., 605169., 605628.,
      606087., 606546., 607005., 607464., 607923., 608382., 608841., 609300.,
      609759., 610218., 610677., 611136., 396297., 396594., 396891., 397188.,
      397485., 397782., 398079., 398376., 427887., 428202., 428517., 428832.,
      626283., 626742., 627201., 627660., 628119., 628578., 629037., 629496.,
      629955., 630414., 630873., 631332., 631791., 632250., 632709., 633168.,
      410553., 410850., 411147., 411444., 411741., 412038., 412335., 412632.,
      443007., 443322., 443637., 443952., 648315., 648774., 649233., 649692.,
      650151., 650610., 651069., 651528., 651987., 652446., 652905., 653364.,
      653823., 654282., 654741., 655200., 424809., 425106., 425403., 425700.,
      425997., 426294., 426591., 426888.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x12x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      83310.,  83388.,  83466.,  83544.,  83622.,  83700.,  83778.,  83856.,
      83934.,  84012.,  84090.,  84168.,  84246.,  84324.,  84402.,  84480.,
      84558.,  84636.,  84714.,  84792.,  84870.,  84948.,  85026.,  85104.,
      85182.,  85260.,  85338.,  85416.,  87054.,  87132.,  87210.,  87288.,
      87366.,  87444.,  87522.,  87600.,  87678.,  87756.,  87834.,  87912.,
      87990.,  88068.,  88146.,  88224.,  88302.,  88380.,  88458.,  88536.,
      88614.,  88692.,  88770.,  88848.,  88926.,  89004.,  89082.,  89160.,
      90798.,  90876.,  90954.,  91032.,  91110.,  91188.,  91266.,  91344.,
      91422.,  91500.,  91578.,  91656.,  91734.,  91812.,  91890.,  91968.,
      92046.,  92124.,  92202.,  92280.,  92358.,  92436.,  92514.,  92592.,
      92670.,  92748.,  92826.,  92904.,  94542.,  94620.,  94698.,  94776.,
      94854.,  94932.,  95010.,  95088.,  95166.,  95244.,  95322.,  95400.,
      95478.,  95556.,  95634.,  95712.,  95790.,  95868.,  95946.,  96024.,
      96102.,  96180.,  96258.,  96336.,  96414.,  96492.,  96570.,  96648.,
      98286.,  98364.,  98442.,  98520.,  98598.,  98676.,  98754.,  98832.,
      98910.,  98988.,  99066.,  99144.,  99222.,  99300.,  99378.,  99456.,
      99534.,  99612.,  99690.,  99768.,  99846.,  99924.,  100002., 100080.,
      100158., 100236., 100314., 100392., 102030., 102108., 102186., 102264.,
      102342., 102420., 102498., 102576., 102654., 102732., 102810., 102888.,
      102966., 103044., 103122., 103200., 103278., 103356., 103434., 103512.,
      103590., 103668., 103746., 103824., 103902., 103980., 104058., 104136.,
      105774., 105852., 105930., 106008., 106086., 106164., 106242., 106320.,
      106398., 106476., 106554., 106632., 106710., 106788., 106866., 106944.,
      107022., 107100., 107178., 107256., 107334., 107412., 107490., 107568.,
      107646., 107724., 107802., 107880.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      913824.,  931482.,  914544.,  932220.,  915264.,  932958.,  915984.,
      933696.,  1340397., 1366776., 1341450., 1367856., 1342503., 1368936.,
      1343556., 1370016., 1344609., 1371096., 1345662., 1372176., 1346715.,
      1373256., 1347768., 1374336., 1348821., 1375416., 1349874., 1376496.,
      1350927., 1377576., 1351980., 1378656., 1353033., 1379736., 1354086.,
      1380816., 1355139., 1381896., 1356192., 1382976., 881244.,  898974.,
      881928.,  899676.,  882612.,  900378.,  883296.,  901080.,  883980.,
      901782.,  884664.,  902484.,  885348.,  903186.,  886032.,  903888.,
      948384.,  966906.,  949104.,  967644.,  949824.,  968382.,  950544.,
      969120.,  1390941., 1418616., 1391994., 1419696., 1393047., 1420776.,
      1394100., 1421856., 1395153., 1422936., 1396206., 1424016., 1397259.,
      1425096., 1398312., 1426176., 1399365., 1427256., 1400418., 1428336.,
      1401471., 1429416., 1402524., 1430496., 1403577., 1431576., 1404630.,
      1432656., 1405683., 1433736., 1406736., 1434816., 914076.,  932670.,
      914760.,  933372.,  915444.,  934074.,  916128.,  934776.,  916812.,
      935478.,  917496.,  936180.,  918180.,  936882.,  918864.,  937584.,
      1163928., 1187472., 1164816., 1188384., 1165704., 1189296., 1166592.,
      1190208., 1705872., 1741044., 1707168., 1742376., 1708464., 1743708.,
      1709760., 1745040., 1711056., 1746372., 1712352., 1747704., 1713648.,
      1749036., 1714944., 1750368., 1716240., 1751700., 1717536., 1753032.,
      1718832., 1754364., 1720128., 1755696., 1721424., 1757028., 1722720.,
      1758360., 1724016., 1759692., 1725312., 1761024., 1120200., 1143840.,
      1121040., 1144704., 1121880., 1145568., 1122720., 1146432., 1123560.,
      1147296., 1124400., 1148160., 1125240., 1149024., 1126080., 1149888.,
      1206552., 1231248., 1207440., 1232160., 1208328., 1233072., 1209216.,
      1233984., 1768080., 1804980., 1769376., 1806312., 1770672., 1807644.,
      1771968., 1808976., 1773264., 1810308., 1774560., 1811640., 1775856.,
      1812972., 1777152., 1814304., 1778448., 1815636., 1779744., 1816968.,
      1781040., 1818300., 1782336., 1819632., 1783632., 1820964., 1784928.,
      1822296., 1786224., 1823628., 1787520., 1824960., 1160520., 1185312.,
      1161360., 1186176., 1162200., 1187040., 1163040., 1187904., 1163880.,
      1188768., 1164720., 1189632., 1165560., 1190496., 1166400., 1191360.,
      807876.,  825534.,  808488.,  826164.,  809100.,  826794.,  809712.,
      827424.,  1182123., 1208502., 1183014., 1209420., 1183905., 1210338.,
      1184796., 1211256., 1185687., 1212174., 1186578., 1213092., 1187469.,
      1214010., 1188360., 1214928., 1189251., 1215846., 1190142., 1216764.,
      1191033., 1217682., 1191924., 1218600., 1192815., 1219518., 1193706.,
      1220436., 1194597., 1221354., 1195488., 1222272., 774864.,  792594.,
      775440.,  793188.,  776016.,  793782.,  776592.,  794376.,  777168.,
      794970.,  777744.,  795564.,  778320.,  796158.,  778896.,  796752.,
      837252.,  855774.,  837864.,  856404.,  838476.,  857034.,  839088.,
      857664.,  1224891., 1252566., 1225782., 1253484., 1226673., 1254402.,
      1227564., 1255320., 1228455., 1256238., 1229346., 1257156., 1230237.,
      1258074., 1231128., 1258992., 1232019., 1259910., 1232910., 1260828.,
      1233801., 1261746., 1234692., 1262664., 1235583., 1263582., 1236474.,
      1264500., 1237365., 1265418., 1238256., 1266336., 802512.,  821106.,
      803088.,  821700.,  803664.,  822294.,  804240.,  822888.,  804816.,
      823482.,  805392.,  824076.,  805968.,  824670.,  806544.,  825264.,
      866628.,  886014.,  867240.,  886644.,  867852.,  887274.,  868464.,
      887904.,  1267659., 1296630., 1268550., 1297548., 1269441., 1298466.,
      1270332., 1299384., 1271223., 1300302., 1272114., 1301220., 1273005.,
      1302138., 1273896., 1303056., 1274787., 1303974., 1275678., 1304892.,
      1276569., 1305810., 1277460., 1306728., 1278351., 1307646., 1279242.,
      1308564., 1280133., 1309482., 1281024., 1310400., 830160.,  849618.,
      830736.,  850212.,  831312.,  850806.,  831888.,  851400.,  832464.,
      851994.,  833040.,  852588.,  833616.,  853182.,  834192.,  853776.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x12x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      157296., 166620., 157440., 166776., 157584., 166932., 157728., 167088.,
      157872., 167244., 158016., 167400., 158160., 167556., 158304., 167712.,
      158448., 167868., 158592., 168024., 158736., 168180., 158880., 168336.,
      159024., 168492., 159168., 168648., 159312., 168804., 159456., 168960.,
      159600., 169116., 159744., 169272., 159888., 169428., 160032., 169584.,
      160176., 169740., 160320., 169896., 160464., 170052., 160608., 170208.,
      160752., 170364., 160896., 170520., 161040., 170676., 161184., 170832.,
      164208., 174108., 164352., 174264., 164496., 174420., 164640., 174576.,
      164784., 174732., 164928., 174888., 165072., 175044., 165216., 175200.,
      165360., 175356., 165504., 175512., 165648., 175668., 165792., 175824.,
      165936., 175980., 166080., 176136., 166224., 176292., 166368., 176448.,
      166512., 176604., 166656., 176760., 166800., 176916., 166944., 177072.,
      167088., 177228., 167232., 177384., 167376., 177540., 167520., 177696.,
      167664., 177852., 167808., 178008., 167952., 178164., 168096., 178320.,
      171120., 181596., 171264., 181752., 171408., 181908., 171552., 182064.,
      171696., 182220., 171840., 182376., 171984., 182532., 172128., 182688.,
      172272., 182844., 172416., 183000., 172560., 183156., 172704., 183312.,
      172848., 183468., 172992., 183624., 173136., 183780., 173280., 183936.,
      173424., 184092., 173568., 184248., 173712., 184404., 173856., 184560.,
      174000., 184716., 174144., 184872., 174288., 185028., 174432., 185184.,
      174576., 185340., 174720., 185496., 174864., 185652., 175008., 185808.,
      178032., 189084., 178176., 189240., 178320., 189396., 178464., 189552.,
      178608., 189708., 178752., 189864., 178896., 190020., 179040., 190176.,
      179184., 190332., 179328., 190488., 179472., 190644., 179616., 190800.,
      179760., 190956., 179904., 191112., 180048., 191268., 180192., 191424.,
      180336., 191580., 180480., 191736., 180624., 191892., 180768., 192048.,
      180912., 192204., 181056., 192360., 181200., 192516., 181344., 192672.,
      181488., 192828., 181632., 192984., 181776., 193140., 181920., 193296.,
      184944., 196572., 185088., 196728., 185232., 196884., 185376., 197040.,
      185520., 197196., 185664., 197352., 185808., 197508., 185952., 197664.,
      186096., 197820., 186240., 197976., 186384., 198132., 186528., 198288.,
      186672., 198444., 186816., 198600., 186960., 198756., 187104., 198912.,
      187248., 199068., 187392., 199224., 187536., 199380., 187680., 199536.,
      187824., 199692., 187968., 199848., 188112., 200004., 188256., 200160.,
      188400., 200316., 188544., 200472., 188688., 200628., 188832., 200784.,
      191856., 204060., 192000., 204216., 192144., 204372., 192288., 204528.,
      192432., 204684., 192576., 204840., 192720., 204996., 192864., 205152.,
      193008., 205308., 193152., 205464., 193296., 205620., 193440., 205776.,
      193584., 205932., 193728., 206088., 193872., 206244., 194016., 206400.,
      194160., 206556., 194304., 206712., 194448., 206868., 194592., 207024.,
      194736., 207180., 194880., 207336., 195024., 207492., 195168., 207648.,
      195312., 207804., 195456., 207960., 195600., 208116., 195744., 208272.,
      198768., 211548., 198912., 211704., 199056., 211860., 199200., 212016.,
      199344., 212172., 199488., 212328., 199632., 212484., 199776., 212640.,
      199920., 212796., 200064., 212952., 200208., 213108., 200352., 213264.,
      200496., 213420., 200640., 213576., 200784., 213732., 200928., 213888.,
      201072., 214044., 201216., 214200., 201360., 214356., 201504., 214512.,
      201648., 214668., 201792., 214824., 201936., 214980., 202080., 215136.,
      202224., 215292., 202368., 215448., 202512., 215604., 202656., 215760.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1809990., 1827648., 1845306., 1862964., 1811412., 1829088., 1846764.,
      1864440., 1812834., 1830528., 1848222., 1865916., 1814256., 1831968.,
      1849680., 1867392., 2654415., 2680794., 2707173., 2733552., 2656494.,
      2682900., 2709306., 2735712., 2658573., 2685006., 2711439., 2737872.,
      2660652., 2687112., 2713572., 2740032., 2662731., 2689218., 2715705.,
      2742192., 2664810., 2691324., 2717838., 2744352., 2666889., 2693430.,
      2719971., 2746512., 2668968., 2695536., 2722104., 2748672., 2671047.,
      2697642., 2724237., 2750832., 2673126., 2699748., 2726370., 2752992.,
      2675205., 2701854., 2728503., 2755152., 2677284., 2703960., 2730636.,
      2757312., 2679363., 2706066., 2732769., 2759472., 2681442., 2708172.,
      2734902., 2761632., 2683521., 2710278., 2737035., 2763792., 2685600.,
      2712384., 2739168., 2765952., 1744758., 1762488., 1780218., 1797948.,
      1746108., 1763856., 1781604., 1799352., 1747458., 1765224., 1782990.,
      1800756., 1748808., 1766592., 1784376., 1802160., 1750158., 1767960.,
      1785762., 1803564., 1751508., 1769328., 1787148., 1804968., 1752858.,
      1770696., 1788534., 1806372., 1754208., 1772064., 1789920., 1807776.,
      1878246., 1896768., 1915290., 1933812., 1879668., 1898208., 1916748.,
      1935288., 1881090., 1899648., 1918206., 1936764., 1882512., 1901088.,
      1919664., 1938240., 2754207., 2781882., 2809557., 2837232., 2756286.,
      2783988., 2811690., 2839392., 2758365., 2786094., 2813823., 2841552.,
      2760444., 2788200., 2815956., 2843712., 2762523., 2790306., 2818089.,
      2845872., 2764602., 2792412., 2820222., 2848032., 2766681., 2794518.,
      2822355., 2850192., 2768760., 2796624., 2824488., 2852352., 2770839.,
      2798730., 2826621., 2854512., 2772918., 2800836., 2828754., 2856672.,
      2774997., 2802942., 2830887., 2858832., 2777076., 2805048., 2833020.,
      2860992., 2779155., 2807154., 2835153., 2863152., 2781234., 2809260.,
      2837286., 2865312., 2783313., 2811366., 2839419., 2867472., 2785392.,
      2813472., 2841552., 2869632., 1809558., 1828152., 1846746., 1865340.,
      1810908., 1829520., 1848132., 1866744., 1812258., 1830888., 1849518.,
      1868148., 1813608., 1832256., 1850904., 1869552., 1814958., 1833624.,
      1852290., 1870956., 1816308., 1834992., 1853676., 1872360., 1817658.,
      1836360., 1855062., 1873764., 1819008., 1837728., 1856448., 1875168.,
      2304312., 2327856., 2351400., 2374944., 2306064., 2329632., 2353200.,
      2376768., 2307816., 2331408., 2355000., 2378592., 2309568., 2333184.,
      2356800., 2380416., 3376572., 3411744., 3446916., 3482088., 3379128.,
      3414336., 3449544., 3484752., 3381684., 3416928., 3452172., 3487416.,
      3384240., 3419520., 3454800., 3490080., 3386796., 3422112., 3457428.,
      3492744., 3389352., 3424704., 3460056., 3495408., 3391908., 3427296.,
      3462684., 3498072., 3394464., 3429888., 3465312., 3500736., 3397020.,
      3432480., 3467940., 3503400., 3399576., 3435072., 3470568., 3506064.,
      3402132., 3437664., 3473196., 3508728., 3404688., 3440256., 3475824.,
      3511392., 3407244., 3442848., 3478452., 3514056., 3409800., 3445440.,
      3481080., 3516720., 3412356., 3448032., 3483708., 3519384., 3414912.,
      3450624., 3486336., 3522048., 2216760., 2240400., 2264040., 2287680.,
      2218416., 2242080., 2265744., 2289408., 2220072., 2243760., 2267448.,
      2291136., 2221728., 2245440., 2269152., 2292864., 2223384., 2247120.,
      2270856., 2294592., 2225040., 2248800., 2272560., 2296320., 2226696.,
      2250480., 2274264., 2298048., 2228352., 2252160., 2275968., 2299776.,
      2388408., 2413104., 2437800., 2462496., 2390160., 2414880., 2439600.,
      2464320., 2391912., 2416656., 2441400., 2466144., 2393664., 2418432.,
      2443200., 2467968., 3499260., 3536160., 3573060., 3609960., 3501816.,
      3538752., 3575688., 3612624., 3504372., 3541344., 3578316., 3615288.,
      3506928., 3543936., 3580944., 3617952., 3509484., 3546528., 3583572.,
      3620616., 3512040., 3549120., 3586200., 3623280., 3514596., 3551712.,
      3588828., 3625944., 3517152., 3554304., 3591456., 3628608., 3519708.,
      3556896., 3594084., 3631272., 3522264., 3559488., 3596712., 3633936.,
      3524820., 3562080., 3599340., 3636600., 3527376., 3564672., 3601968.,
      3639264., 3529932., 3567264., 3604596., 3641928., 3532488., 3569856.,
      3607224., 3644592., 3535044., 3572448., 3609852., 3647256., 3537600.,
      3575040., 3612480., 3649920., 2296248., 2321040., 2345832., 2370624.,
      2297904., 2322720., 2347536., 2372352., 2299560., 2324400., 2349240.,
      2374080., 2301216., 2326080., 2350944., 2375808., 2302872., 2327760.,
      2352648., 2377536., 2304528., 2329440., 2354352., 2379264., 2306184.,
      2331120., 2356056., 2380992., 2307840., 2332800., 2357760., 2382720.,
      1598094., 1615752., 1633410., 1651068., 1599300., 1616976., 1634652.,
      1652328., 1600506., 1618200., 1635894., 1653588., 1601712., 1619424.,
      1637136., 1654848., 2337867., 2364246., 2390625., 2417004., 2339622.,
      2366028., 2392434., 2418840., 2341377., 2367810., 2394243., 2420676.,
      2343132., 2369592., 2396052., 2422512., 2344887., 2371374., 2397861.,
      2424348., 2346642., 2373156., 2399670., 2426184., 2348397., 2374938.,
      2401479., 2428020., 2350152., 2376720., 2403288., 2429856., 2351907.,
      2378502., 2405097., 2431692., 2353662., 2380284., 2406906., 2433528.,
      2355417., 2382066., 2408715., 2435364., 2357172., 2383848., 2410524.,
      2437200., 2358927., 2385630., 2412333., 2439036., 2360682., 2387412.,
      2414142., 2440872., 2362437., 2389194., 2415951., 2442708., 2364192.,
      2390976., 2417760., 2444544., 1531998., 1549728., 1567458., 1585188.,
      1533132., 1550880., 1568628., 1586376., 1534266., 1552032., 1569798.,
      1587564., 1535400., 1553184., 1570968., 1588752., 1536534., 1554336.,
      1572138., 1589940., 1537668., 1555488., 1573308., 1591128., 1538802.,
      1556640., 1574478., 1592316., 1539936., 1557792., 1575648., 1593504.,
      1655982., 1674504., 1693026., 1711548., 1657188., 1675728., 1694268.,
      1712808., 1658394., 1676952., 1695510., 1714068., 1659600., 1678176.,
      1696752., 1715328., 2422107., 2449782., 2477457., 2505132., 2423862.,
      2451564., 2479266., 2506968., 2425617., 2453346., 2481075., 2508804.,
      2427372., 2455128., 2482884., 2510640., 2429127., 2456910., 2484693.,
      2512476., 2430882., 2458692., 2486502., 2514312., 2432637., 2460474.,
      2488311., 2516148., 2434392., 2462256., 2490120., 2517984., 2436147.,
      2464038., 2491929., 2519820., 2437902., 2465820., 2493738., 2521656.,
      2439657., 2467602., 2495547., 2523492., 2441412., 2469384., 2497356.,
      2525328., 2443167., 2471166., 2499165., 2527164., 2444922., 2472948.,
      2500974., 2529000., 2446677., 2474730., 2502783., 2530836., 2448432.,
      2476512., 2504592., 2532672., 1586430., 1605024., 1623618., 1642212.,
      1587564., 1606176., 1624788., 1643400., 1588698., 1607328., 1625958.,
      1644588., 1589832., 1608480., 1627128., 1645776., 1590966., 1609632.,
      1628298., 1646964., 1592100., 1610784., 1629468., 1648152., 1593234.,
      1611936., 1630638., 1649340., 1594368., 1613088., 1631808., 1650528.,
      1713870., 1733256., 1752642., 1772028., 1715076., 1734480., 1753884.,
      1773288., 1716282., 1735704., 1755126., 1774548., 1717488., 1736928.,
      1756368., 1775808., 2506347., 2535318., 2564289., 2593260., 2508102.,
      2537100., 2566098., 2595096., 2509857., 2538882., 2567907., 2596932.,
      2511612., 2540664., 2569716., 2598768., 2513367., 2542446., 2571525.,
      2600604., 2515122., 2544228., 2573334., 2602440., 2516877., 2546010.,
      2575143., 2604276., 2518632., 2547792., 2576952., 2606112., 2520387.,
      2549574., 2578761., 2607948., 2522142., 2551356., 2580570., 2609784.,
      2523897., 2553138., 2582379., 2611620., 2525652., 2554920., 2584188.,
      2613456., 2527407., 2556702., 2585997., 2615292., 2529162., 2558484.,
      2587806., 2617128., 2530917., 2560266., 2589615., 2618964., 2532672.,
      2562048., 2591424., 2620800., 1640862., 1660320., 1679778., 1699236.,
      1641996., 1661472., 1680948., 1700424., 1643130., 1662624., 1682118.,
      1701612., 1644264., 1663776., 1683288., 1702800., 1645398., 1664928.,
      1684458., 1703988., 1646532., 1666080., 1685628., 1705176., 1647666.,
      1667232., 1686798., 1706364., 1648800., 1668384., 1687968., 1707552.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x12x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      305268., 314592., 323916., 333240., 305544., 314880., 324216., 333552.,
      305820., 315168., 324516., 333864., 306096., 315456., 324816., 334176.,
      306372., 315744., 325116., 334488., 306648., 316032., 325416., 334800.,
      306924., 316320., 325716., 335112., 307200., 316608., 326016., 335424.,
      307476., 316896., 326316., 335736., 307752., 317184., 326616., 336048.,
      308028., 317472., 326916., 336360., 308304., 317760., 327216., 336672.,
      308580., 318048., 327516., 336984., 308856., 318336., 327816., 337296.,
      309132., 318624., 328116., 337608., 309408., 318912., 328416., 337920.,
      309684., 319200., 328716., 338232., 309960., 319488., 329016., 338544.,
      310236., 319776., 329316., 338856., 310512., 320064., 329616., 339168.,
      310788., 320352., 329916., 339480., 311064., 320640., 330216., 339792.,
      311340., 320928., 330516., 340104., 311616., 321216., 330816., 340416.,
      311892., 321504., 331116., 340728., 312168., 321792., 331416., 341040.,
      312444., 322080., 331716., 341352., 312720., 322368., 332016., 341664.,
      318516., 328416., 338316., 348216., 318792., 328704., 338616., 348528.,
      319068., 328992., 338916., 348840., 319344., 329280., 339216., 349152.,
      319620., 329568., 339516., 349464., 319896., 329856., 339816., 349776.,
      320172., 330144., 340116., 350088., 320448., 330432., 340416., 350400.,
      320724., 330720., 340716., 350712., 321000., 331008., 341016., 351024.,
      321276., 331296., 341316., 351336., 321552., 331584., 341616., 351648.,
      321828., 331872., 341916., 351960., 322104., 332160., 342216., 352272.,
      322380., 332448., 342516., 352584., 322656., 332736., 342816., 352896.,
      322932., 333024., 343116., 353208., 323208., 333312., 343416., 353520.,
      323484., 333600., 343716., 353832., 323760., 333888., 344016., 354144.,
      324036., 334176., 344316., 354456., 324312., 334464., 344616., 354768.,
      324588., 334752., 344916., 355080., 324864., 335040., 345216., 355392.,
      325140., 335328., 345516., 355704., 325416., 335616., 345816., 356016.,
      325692., 335904., 346116., 356328., 325968., 336192., 346416., 356640.,
      331764., 342240., 352716., 363192., 332040., 342528., 353016., 363504.,
      332316., 342816., 353316., 363816., 332592., 343104., 353616., 364128.,
      332868., 343392., 353916., 364440., 333144., 343680., 354216., 364752.,
      333420., 343968., 354516., 365064., 333696., 344256., 354816., 365376.,
      333972., 344544., 355116., 365688., 334248., 344832., 355416., 366000.,
      334524., 345120., 355716., 366312., 334800., 345408., 356016., 366624.,
      335076., 345696., 356316., 366936., 335352., 345984., 356616., 367248.,
      335628., 346272., 356916., 367560., 335904., 346560., 357216., 367872.,
      336180., 346848., 357516., 368184., 336456., 347136., 357816., 368496.,
      336732., 347424., 358116., 368808., 337008., 347712., 358416., 369120.,
      337284., 348000., 358716., 369432., 337560., 348288., 359016., 369744.,
      337836., 348576., 359316., 370056., 338112., 348864., 359616., 370368.,
      338388., 349152., 359916., 370680., 338664., 349440., 360216., 370992.,
      338940., 349728., 360516., 371304., 339216., 350016., 360816., 371616.,
      345012., 356064., 367116., 378168., 345288., 356352., 367416., 378480.,
      345564., 356640., 367716., 378792., 345840., 356928., 368016., 379104.,
      346116., 357216., 368316., 379416., 346392., 357504., 368616., 379728.,
      346668., 357792., 368916., 380040., 346944., 358080., 369216., 380352.,
      347220., 358368., 369516., 380664., 347496., 358656., 369816., 380976.,
      347772., 358944., 370116., 381288., 348048., 359232., 370416., 381600.,
      348324., 359520., 370716., 381912., 348600., 359808., 371016., 382224.,
      348876., 360096., 371316., 382536., 349152., 360384., 371616., 382848.,
      349428., 360672., 371916., 383160., 349704., 360960., 372216., 383472.,
      349980., 361248., 372516., 383784., 350256., 361536., 372816., 384096.,
      350532., 361824., 373116., 384408., 350808., 362112., 373416., 384720.,
      351084., 362400., 373716., 385032., 351360., 362688., 374016., 385344.,
      351636., 362976., 374316., 385656., 351912., 363264., 374616., 385968.,
      352188., 363552., 374916., 386280., 352464., 363840., 375216., 386592.,
      358260., 369888., 381516., 393144., 358536., 370176., 381816., 393456.,
      358812., 370464., 382116., 393768., 359088., 370752., 382416., 394080.,
      359364., 371040., 382716., 394392., 359640., 371328., 383016., 394704.,
      359916., 371616., 383316., 395016., 360192., 371904., 383616., 395328.,
      360468., 372192., 383916., 395640., 360744., 372480., 384216., 395952.,
      361020., 372768., 384516., 396264., 361296., 373056., 384816., 396576.,
      361572., 373344., 385116., 396888., 361848., 373632., 385416., 397200.,
      362124., 373920., 385716., 397512., 362400., 374208., 386016., 397824.,
      362676., 374496., 386316., 398136., 362952., 374784., 386616., 398448.,
      363228., 375072., 386916., 398760., 363504., 375360., 387216., 399072.,
      363780., 375648., 387516., 399384., 364056., 375936., 387816., 399696.,
      364332., 376224., 388116., 400008., 364608., 376512., 388416., 400320.,
      364884., 376800., 388716., 400632., 365160., 377088., 389016., 400944.,
      365436., 377376., 389316., 401256., 365712., 377664., 389616., 401568.,
      371508., 383712., 395916., 408120., 371784., 384000., 396216., 408432.,
      372060., 384288., 396516., 408744., 372336., 384576., 396816., 409056.,
      372612., 384864., 397116., 409368., 372888., 385152., 397416., 409680.,
      373164., 385440., 397716., 409992., 373440., 385728., 398016., 410304.,
      373716., 386016., 398316., 410616., 373992., 386304., 398616., 410928.,
      374268., 386592., 398916., 411240., 374544., 386880., 399216., 411552.,
      374820., 387168., 399516., 411864., 375096., 387456., 399816., 412176.,
      375372., 387744., 400116., 412488., 375648., 388032., 400416., 412800.,
      375924., 388320., 400716., 413112., 376200., 388608., 401016., 413424.,
      376476., 388896., 401316., 413736., 376752., 389184., 401616., 414048.,
      377028., 389472., 401916., 414360., 377304., 389760., 402216., 414672.,
      377580., 390048., 402516., 414984., 377856., 390336., 402816., 415296.,
      378132., 390624., 403116., 415608., 378408., 390912., 403416., 415920.,
      378684., 391200., 403716., 416232., 378960., 391488., 404016., 416544.,
      384756., 397536., 410316., 423096., 385032., 397824., 410616., 423408.,
      385308., 398112., 410916., 423720., 385584., 398400., 411216., 424032.,
      385860., 398688., 411516., 424344., 386136., 398976., 411816., 424656.,
      386412., 399264., 412116., 424968., 386688., 399552., 412416., 425280.,
      386964., 399840., 412716., 425592., 387240., 400128., 413016., 425904.,
      387516., 400416., 413316., 426216., 387792., 400704., 413616., 426528.,
      388068., 400992., 413916., 426840., 388344., 401280., 414216., 427152.,
      388620., 401568., 414516., 427464., 388896., 401856., 414816., 427776.,
      389172., 402144., 415116., 428088., 389448., 402432., 415416., 428400.,
      389724., 402720., 415716., 428712., 390000., 403008., 416016., 429024.,
      390276., 403296., 416316., 429336., 390552., 403584., 416616., 429648.,
      390828., 403872., 416916., 429960., 391104., 404160., 417216., 430272.,
      391380., 404448., 417516., 430584., 391656., 404736., 417816., 430896.,
      391932., 405024., 418116., 431208., 392208., 405312., 418416., 431520.};
  const std::array<int, 4> in_shape = {{3, 14, 12, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      269775., 270504., 354618., 355572., 262026., 262728., 263430.,
      279981., 280710., 367974., 368928., 271854., 272556., 273258.,
      343740., 344640., 451544., 452720., 333408., 334272., 335136.,
      356340., 357240., 468008., 469184., 345504., 346368., 347232.,
      238779., 239400., 313290., 314100., 231030., 231624., 232218.,
      247473., 248094., 324630., 325440., 239346., 239940., 240534.,
      256167., 256788., 335970., 336780., 247662., 248256., 248850.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x14x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      24326., 24404., 24482., 24560., 24638., 24716., 24794., 25418., 25496.,
      25574., 25652., 25730., 25808., 25886., 26510., 26588., 26666., 26744.,
      26822., 26900., 26978., 27602., 27680., 27758., 27836., 27914., 27992.,
      28070., 28694., 28772., 28850., 28928., 29006., 29084., 29162., 29786.,
      29864., 29942., 30020., 30098., 30176., 30254., 30878., 30956., 31034.,
      31112., 31190., 31268., 31346.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 1}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      531801., 539550., 533232., 541008., 698904., 709236., 700776., 711144.,
      516303., 524052., 517680., 525456., 519057., 526860., 551835., 559962.,
      553266., 561420., 725112., 735948., 726984., 737856., 535581., 543708.,
      536958., 545112., 538335., 546516., 677148., 687480., 678912., 689280.,
      889312., 903088., 891616., 905440., 656484., 666816., 658176., 668544.,
      659868., 670272., 701844., 712680., 703608., 714480., 921568., 936016.,
      923872., 938368., 680172., 691008., 681864., 692736., 683556., 694464.,
      469809., 477558., 471024., 478800., 616248., 626580., 617832., 628200.,
      454311., 462060., 455472., 463248., 456633., 464436., 486819., 494946.,
      488034., 496188., 638424., 649260., 640008., 650880., 470565., 478692.,
      471726., 479880., 472887., 481068., 503829., 512334., 505044., 513576.,
      660600., 671940., 662184., 673560., 486819., 495324., 487980., 496512.,
      489141., 497700.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x14x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      45928., 48652., 46072., 48808., 46216., 48964., 46360., 49120., 46504.,
      49276., 46648., 49432., 46792., 49588., 47944., 50836., 48088., 50992.,
      48232., 51148., 48376., 51304., 48520., 51460., 48664., 51616., 48808.,
      51772., 49960., 53020., 50104., 53176., 50248., 53332., 50392., 53488.,
      50536., 53644., 50680., 53800., 50824., 53956., 51976., 55204., 52120.,
      55360., 52264., 55516., 52408., 55672., 52552., 55828., 52696., 55984.,
      52840., 56140., 53992., 57388., 54136., 57544., 54280., 57700., 54424.,
      57856., 54568., 58012., 54712., 58168., 54856., 58324., 56008., 59572.,
      56152., 59728., 56296., 59884., 56440., 60040., 56584., 60196., 56728.,
      60352., 56872., 60508., 58024., 61756., 58168., 61912., 58312., 62068.,
      58456., 62224., 58600., 62380., 58744., 62536., 58888., 62692.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 1}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1055853., 1063602., 1071351., 1079100., 1058688., 1066464., 1074240.,
      1082016., 1387476., 1397808., 1408140., 1418472., 1391184., 1401552.,
      1411920., 1422288., 1024857., 1032606., 1040355., 1048104., 1027584.,
      1035360., 1043136., 1050912., 1030311., 1038114., 1045917., 1053720.,
      1095543., 1103670., 1111797., 1119924., 1098378., 1106532., 1114686.,
      1122840., 1439388., 1450224., 1461060., 1471896., 1443096., 1453968.,
      1464840., 1475712., 1063035., 1071162., 1079289., 1087416., 1065762.,
      1073916., 1082070., 1090224., 1068489., 1076670., 1084851., 1093032.,
      1343964., 1354296., 1364628., 1374960., 1347456., 1357824., 1368192.,
      1378560., 1764848., 1778624., 1792400., 1806176., 1769408., 1783232.,
      1797056., 1810880., 1302636., 1312968., 1323300., 1333632., 1305984.,
      1316352., 1326720., 1337088., 1309332., 1319736., 1330140., 1340544.,
      1392852., 1403688., 1414524., 1425360., 1396344., 1407216., 1418088.,
      1428960., 1828688., 1843136., 1857584., 1872032., 1833248., 1847744.,
      1862240., 1876736., 1349508., 1360344., 1371180., 1382016., 1352856.,
      1363728., 1374600., 1385472., 1356204., 1367112., 1378020., 1388928.,
      931869.,  939618.,  947367.,  955116.,  934272.,  942048.,  949824.,
      957600.,  1222164., 1232496., 1242828., 1253160., 1225296., 1235664.,
      1246032., 1256400., 900873.,  908622.,  916371.,  924120.,  903168.,
      910944.,  918720.,  926496.,  905463.,  913266.,  921069.,  928872.,
      965511.,  973638.,  981765.,  989892.,  967914.,  976068.,  984222.,
      992376.,  1266012., 1276848., 1287684., 1298520., 1269144., 1280016.,
      1290888., 1301760., 933003.,  941130.,  949257.,  957384.,  935298.,
      943452.,  951606.,  959760.,  937593.,  945774.,  953955.,  962136.,
      999153.,  1007658., 1016163., 1024668., 1001556., 1010088., 1018620.,
      1027152., 1309860., 1321200., 1332540., 1343880., 1312992., 1324368.,
      1335744., 1347120., 965133.,  973638.,  982143.,  990648.,  967428.,
      975960.,  984492.,  993024.,  969723.,  978282.,  986841.,  995400.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x14x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      89132.,  91856.,  94580.,  97304.,  89408.,  92144.,  94880.,  97616.,
      89684.,  92432.,  95180.,  97928.,  89960.,  92720.,  95480.,  98240.,
      90236.,  93008.,  95780.,  98552.,  90512.,  93296.,  96080.,  98864.,
      90788.,  93584.,  96380.,  99176.,  92996.,  95888.,  98780.,  101672.,
      93272.,  96176.,  99080.,  101984., 93548.,  96464.,  99380.,  102296.,
      93824.,  96752.,  99680.,  102608., 94100.,  97040.,  99980.,  102920.,
      94376.,  97328.,  100280., 103232., 94652.,  97616.,  100580., 103544.,
      96860.,  99920.,  102980., 106040., 97136.,  100208., 103280., 106352.,
      97412.,  100496., 103580., 106664., 97688.,  100784., 103880., 106976.,
      97964.,  101072., 104180., 107288., 98240.,  101360., 104480., 107600.,
      98516.,  101648., 104780., 107912., 100724., 103952., 107180., 110408.,
      101000., 104240., 107480., 110720., 101276., 104528., 107780., 111032.,
      101552., 104816., 108080., 111344., 101828., 105104., 108380., 111656.,
      102104., 105392., 108680., 111968., 102380., 105680., 108980., 112280.,
      104588., 107984., 111380., 114776., 104864., 108272., 111680., 115088.,
      105140., 108560., 111980., 115400., 105416., 108848., 112280., 115712.,
      105692., 109136., 112580., 116024., 105968., 109424., 112880., 116336.,
      106244., 109712., 113180., 116648., 108452., 112016., 115580., 119144.,
      108728., 112304., 115880., 119456., 109004., 112592., 116180., 119768.,
      109280., 112880., 116480., 120080., 109556., 113168., 116780., 120392.,
      109832., 113456., 117080., 120704., 110108., 113744., 117380., 121016.,
      112316., 116048., 119780., 123512., 112592., 116336., 120080., 123824.,
      112868., 116624., 120380., 124136., 113144., 116912., 120680., 124448.,
      113420., 117200., 120980., 124760., 113696., 117488., 121280., 125072.,
      113972., 117776., 121580., 125384.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 1}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      538821., 539550., 540279., 541008., 708282., 709236., 710190., 711144.,
      523350., 524052., 524754., 525456., 526158., 526860., 559233., 559962.,
      560691., 561420., 734994., 735948., 736902., 737856., 543006., 543708.,
      544410., 545112., 545814., 546516., 686580., 687480., 688380., 689280.,
      901912., 903088., 904264., 905440., 665952., 666816., 667680., 668544.,
      669408., 670272., 711780., 712680., 713580., 714480., 934840., 936016.,
      937192., 938368., 690144., 691008., 691872., 692736., 693600., 694464.,
      476937., 477558., 478179., 478800., 625770., 626580., 627390., 628200.,
      461466., 462060., 462654., 463248., 463842., 464436., 494325., 494946.,
      495567., 496188., 648450., 649260., 650070., 650880., 478098., 478692.,
      479286., 479880., 480474., 481068., 511713., 512334., 512955., 513576.,
      671130., 671940., 672750., 673560., 494730., 495324., 495918., 496512.,
      497106., 497700.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x14x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      48574., 48652., 48730., 48808., 48886., 48964., 49042., 49120., 49198.,
      49276., 49354., 49432., 49510., 49588., 50758., 50836., 50914., 50992.,
      51070., 51148., 51226., 51304., 51382., 51460., 51538., 51616., 51694.,
      51772., 52942., 53020., 53098., 53176., 53254., 53332., 53410., 53488.,
      53566., 53644., 53722., 53800., 53878., 53956., 55126., 55204., 55282.,
      55360., 55438., 55516., 55594., 55672., 55750., 55828., 55906., 55984.,
      56062., 56140., 57310., 57388., 57466., 57544., 57622., 57700., 57778.,
      57856., 57934., 58012., 58090., 58168., 58246., 58324., 59494., 59572.,
      59650., 59728., 59806., 59884., 59962., 60040., 60118., 60196., 60274.,
      60352., 60430., 60508., 61678., 61756., 61834., 61912., 61990., 62068.,
      62146., 62224., 62302., 62380., 62458., 62536., 62614., 62692.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 2}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1062171., 1077642., 1063602., 1079100., 1065033., 1080558., 1066464.,
      1082016., 1395936., 1416564., 1397808., 1418472., 1399680., 1420380.,
      1401552., 1422288., 1031229., 1046700., 1032606., 1048104., 1033983.,
      1049508., 1035360., 1050912., 1036737., 1052316., 1038114., 1053720.,
      1102239., 1118466., 1103670., 1119924., 1105101., 1121382., 1106532.,
      1122840., 1448352., 1469988., 1450224., 1471896., 1452096., 1473804.,
      1453968., 1475712., 1069785., 1086012., 1071162., 1087416., 1072539.,
      1088820., 1073916., 1090224., 1075293., 1091628., 1076670., 1093032.,
      1352532., 1373160., 1354296., 1374960., 1356060., 1376760., 1357824.,
      1378560., 1776320., 1803824., 1778624., 1806176., 1780928., 1808528.,
      1783232., 1810880., 1311276., 1331904., 1312968., 1333632., 1314660.,
      1335360., 1316352., 1337088., 1318044., 1338816., 1319736., 1340544.,
      1401924., 1423560., 1403688., 1425360., 1405452., 1427160., 1407216.,
      1428960., 1840832., 1869680., 1843136., 1872032., 1845440., 1874384.,
      1847744., 1876736., 1358652., 1380288., 1360344., 1382016., 1362036.,
      1383744., 1363728., 1385472., 1365420., 1387200., 1367112., 1388928.,
      938403.,  953874.,  939618.,  955116.,  940833.,  956358.,  942048.,
      957600.,  1230912., 1251540., 1232496., 1253160., 1234080., 1254780.,
      1235664., 1256400., 907461.,  922932.,  908622.,  924120.,  909783.,
      925308.,  910944.,  926496.,  912105.,  927684.,  913266.,  928872.,
      972423.,  988650.,  973638.,  989892.,  974853.,  991134.,  976068.,
      992376.,  1275264., 1296900., 1276848., 1298520., 1278432., 1300140.,
      1280016., 1301760., 939969.,  956196.,  941130.,  957384.,  942291.,
      958572.,  943452.,  959760.,  944613.,  960948.,  945774.,  962136.,
      1006443., 1023426., 1007658., 1024668., 1008873., 1025910., 1010088.,
      1027152., 1319616., 1342260., 1321200., 1343880., 1322784., 1345500.,
      1324368., 1347120., 972477.,  989460.,  973638.,  990648.,  974799.,
      991836.,  975960.,  993024.,  977121.,  994212.,  978282.,  995400.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x14x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      91712.,  97148.,  91856.,  97304.,  92000.,  97460.,  92144.,  97616.,
      92288.,  97772.,  92432.,  97928.,  92576.,  98084.,  92720.,  98240.,
      92864.,  98396.,  93008.,  98552.,  93152.,  98708.,  93296.,  98864.,
      93440.,  99020.,  93584.,  99176.,  95744.,  101516., 95888.,  101672.,
      96032.,  101828., 96176.,  101984., 96320.,  102140., 96464.,  102296.,
      96608.,  102452., 96752.,  102608., 96896.,  102764., 97040.,  102920.,
      97184.,  103076., 97328.,  103232., 97472.,  103388., 97616.,  103544.,
      99776.,  105884., 99920.,  106040., 100064., 106196., 100208., 106352.,
      100352., 106508., 100496., 106664., 100640., 106820., 100784., 106976.,
      100928., 107132., 101072., 107288., 101216., 107444., 101360., 107600.,
      101504., 107756., 101648., 107912., 103808., 110252., 103952., 110408.,
      104096., 110564., 104240., 110720., 104384., 110876., 104528., 111032.,
      104672., 111188., 104816., 111344., 104960., 111500., 105104., 111656.,
      105248., 111812., 105392., 111968., 105536., 112124., 105680., 112280.,
      107840., 114620., 107984., 114776., 108128., 114932., 108272., 115088.,
      108416., 115244., 108560., 115400., 108704., 115556., 108848., 115712.,
      108992., 115868., 109136., 116024., 109280., 116180., 109424., 116336.,
      109568., 116492., 109712., 116648., 111872., 118988., 112016., 119144.,
      112160., 119300., 112304., 119456., 112448., 119612., 112592., 119768.,
      112736., 119924., 112880., 120080., 113024., 120236., 113168., 120392.,
      113312., 120548., 113456., 120704., 113600., 120860., 113744., 121016.,
      115904., 123356., 116048., 123512., 116192., 123668., 116336., 123824.,
      116480., 123980., 116624., 124136., 116768., 124292., 116912., 124448.,
      117056., 124604., 117200., 124760., 117344., 124916., 117488., 125072.,
      117632., 125228., 117776., 125384.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 2}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2108871., 2124342., 2139813., 2155284., 2111706., 2127204., 2142702.,
      2158200., 2114541., 2130066., 2145591., 2161116., 2117376., 2132928.,
      2148480., 2164032., 2771244., 2791872., 2812500., 2833128., 2774952.,
      2795616., 2816280., 2836944., 2778660., 2799360., 2820060., 2840760.,
      2782368., 2803104., 2823840., 2844576., 2046987., 2062458., 2077929.,
      2093400., 2049714., 2065212., 2080710., 2096208., 2052441., 2067966.,
      2083491., 2099016., 2055168., 2070720., 2086272., 2101824., 2057895.,
      2073474., 2089053., 2104632., 2060622., 2076228., 2091834., 2107440.,
      2188251., 2204478., 2220705., 2236932., 2191086., 2207340., 2223594.,
      2239848., 2193921., 2210202., 2226483., 2242764., 2196756., 2213064.,
      2229372., 2245680., 2875068., 2896704., 2918340., 2939976., 2878776.,
      2900448., 2922120., 2943792., 2882484., 2904192., 2925900., 2947608.,
      2886192., 2907936., 2929680., 2951424., 2123343., 2139570., 2155797.,
      2172024., 2126070., 2142324., 2158578., 2174832., 2128797., 2145078.,
      2161359., 2177640., 2131524., 2147832., 2164140., 2180448., 2134251.,
      2150586., 2166921., 2183256., 2136978., 2153340., 2169702., 2186064.,
      2684436., 2705064., 2725692., 2746320., 2687928., 2708592., 2729256.,
      2749920., 2691420., 2712120., 2732820., 2753520., 2694912., 2715648.,
      2736384., 2757120., 3525136., 3552640., 3580144., 3607648., 3529696.,
      3557248., 3584800., 3612352., 3534256., 3561856., 3589456., 3617056.,
      3538816., 3566464., 3594112., 3621760., 2601924., 2622552., 2643180.,
      2663808., 2605272., 2625936., 2646600., 2667264., 2608620., 2629320.,
      2650020., 2670720., 2611968., 2632704., 2653440., 2674176., 2615316.,
      2636088., 2656860., 2677632., 2618664., 2639472., 2660280., 2681088.,
      2782212., 2803848., 2825484., 2847120., 2785704., 2807376., 2829048.,
      2850720., 2789196., 2810904., 2832612., 2854320., 2792688., 2814432.,
      2836176., 2857920., 3652816., 3681664., 3710512., 3739360., 3657376.,
      3686272., 3715168., 3744064., 3661936., 3690880., 3719824., 3748768.,
      3666496., 3695488., 3724480., 3753472., 2695668., 2717304., 2738940.,
      2760576., 2699016., 2720688., 2742360., 2764032., 2702364., 2724072.,
      2745780., 2767488., 2705712., 2727456., 2749200., 2770944., 2709060.,
      2730840., 2752620., 2774400., 2712408., 2734224., 2756040., 2777856.,
      1861335., 1876806., 1892277., 1907748., 1863738., 1879236., 1894734.,
      1910232., 1866141., 1881666., 1897191., 1912716., 1868544., 1884096.,
      1899648., 1915200., 2441196., 2461824., 2482452., 2503080., 2444328.,
      2464992., 2485656., 2506320., 2447460., 2468160., 2488860., 2509560.,
      2450592., 2471328., 2492064., 2512800., 1799451., 1814922., 1830393.,
      1845864., 1801746., 1817244., 1832742., 1848240., 1804041., 1819566.,
      1835091., 1850616., 1806336., 1821888., 1837440., 1852992., 1808631.,
      1824210., 1839789., 1855368., 1810926., 1826532., 1842138., 1857744.,
      1928619., 1944846., 1961073., 1977300., 1931022., 1947276., 1963530.,
      1979784., 1933425., 1949706., 1965987., 1982268., 1935828., 1952136.,
      1968444., 1984752., 2528892., 2550528., 2572164., 2593800., 2532024.,
      2553696., 2575368., 2597040., 2535156., 2556864., 2578572., 2600280.,
      2538288., 2560032., 2581776., 2603520., 1863711., 1879938., 1896165.,
      1912392., 1866006., 1882260., 1898514., 1914768., 1868301., 1884582.,
      1900863., 1917144., 1870596., 1886904., 1903212., 1919520., 1872891.,
      1889226., 1905561., 1921896., 1875186., 1891548., 1907910., 1924272.,
      1995903., 2012886., 2029869., 2046852., 1998306., 2015316., 2032326.,
      2049336., 2000709., 2017746., 2034783., 2051820., 2003112., 2020176.,
      2037240., 2054304., 2616588., 2639232., 2661876., 2684520., 2619720.,
      2642400., 2665080., 2687760., 2622852., 2645568., 2668284., 2691000.,
      2625984., 2648736., 2671488., 2694240., 1927971., 1944954., 1961937.,
      1978920., 1930266., 1947276., 1964286., 1981296., 1932561., 1949598.,
      1966635., 1983672., 1934856., 1951920., 1968984., 1986048., 1937151.,
      1954242., 1971333., 1988424., 1939446., 1956564., 1973682., 1990800.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x14x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      177988., 183424., 188860., 194296., 178264., 183712., 189160., 194608.,
      178540., 184000., 189460., 194920., 178816., 184288., 189760., 195232.,
      179092., 184576., 190060., 195544., 179368., 184864., 190360., 195856.,
      179644., 185152., 190660., 196168., 179920., 185440., 190960., 196480.,
      180196., 185728., 191260., 196792., 180472., 186016., 191560., 197104.,
      180748., 186304., 191860., 197416., 181024., 186592., 192160., 197728.,
      181300., 186880., 192460., 198040., 181576., 187168., 192760., 198352.,
      185716., 191488., 197260., 203032., 185992., 191776., 197560., 203344.,
      186268., 192064., 197860., 203656., 186544., 192352., 198160., 203968.,
      186820., 192640., 198460., 204280., 187096., 192928., 198760., 204592.,
      187372., 193216., 199060., 204904., 187648., 193504., 199360., 205216.,
      187924., 193792., 199660., 205528., 188200., 194080., 199960., 205840.,
      188476., 194368., 200260., 206152., 188752., 194656., 200560., 206464.,
      189028., 194944., 200860., 206776., 189304., 195232., 201160., 207088.,
      193444., 199552., 205660., 211768., 193720., 199840., 205960., 212080.,
      193996., 200128., 206260., 212392., 194272., 200416., 206560., 212704.,
      194548., 200704., 206860., 213016., 194824., 200992., 207160., 213328.,
      195100., 201280., 207460., 213640., 195376., 201568., 207760., 213952.,
      195652., 201856., 208060., 214264., 195928., 202144., 208360., 214576.,
      196204., 202432., 208660., 214888., 196480., 202720., 208960., 215200.,
      196756., 203008., 209260., 215512., 197032., 203296., 209560., 215824.,
      201172., 207616., 214060., 220504., 201448., 207904., 214360., 220816.,
      201724., 208192., 214660., 221128., 202000., 208480., 214960., 221440.,
      202276., 208768., 215260., 221752., 202552., 209056., 215560., 222064.,
      202828., 209344., 215860., 222376., 203104., 209632., 216160., 222688.,
      203380., 209920., 216460., 223000., 203656., 210208., 216760., 223312.,
      203932., 210496., 217060., 223624., 204208., 210784., 217360., 223936.,
      204484., 211072., 217660., 224248., 204760., 211360., 217960., 224560.,
      208900., 215680., 222460., 229240., 209176., 215968., 222760., 229552.,
      209452., 216256., 223060., 229864., 209728., 216544., 223360., 230176.,
      210004., 216832., 223660., 230488., 210280., 217120., 223960., 230800.,
      210556., 217408., 224260., 231112., 210832., 217696., 224560., 231424.,
      211108., 217984., 224860., 231736., 211384., 218272., 225160., 232048.,
      211660., 218560., 225460., 232360., 211936., 218848., 225760., 232672.,
      212212., 219136., 226060., 232984., 212488., 219424., 226360., 233296.,
      216628., 223744., 230860., 237976., 216904., 224032., 231160., 238288.,
      217180., 224320., 231460., 238600., 217456., 224608., 231760., 238912.,
      217732., 224896., 232060., 239224., 218008., 225184., 232360., 239536.,
      218284., 225472., 232660., 239848., 218560., 225760., 232960., 240160.,
      218836., 226048., 233260., 240472., 219112., 226336., 233560., 240784.,
      219388., 226624., 233860., 241096., 219664., 226912., 234160., 241408.,
      219940., 227200., 234460., 241720., 220216., 227488., 234760., 242032.,
      224356., 231808., 239260., 246712., 224632., 232096., 239560., 247024.,
      224908., 232384., 239860., 247336., 225184., 232672., 240160., 247648.,
      225460., 232960., 240460., 247960., 225736., 233248., 240760., 248272.,
      226012., 233536., 241060., 248584., 226288., 233824., 241360., 248896.,
      226564., 234112., 241660., 249208., 226840., 234400., 241960., 249520.,
      227116., 234688., 242260., 249832., 227392., 234976., 242560., 250144.,
      227668., 235264., 242860., 250456., 227944., 235552., 243160., 250768.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 2}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      788145.,  788874.,  789603.,  790332.,  791061.,  791790.,  792519.,
      793248.,  1034682., 1035636., 1036590., 1037544., 1038498., 1039452.,
      1040406., 1041360., 763374.,  764076.,  764778.,  765480.,  766182.,
      766884.,  767586.,  768288.,  768990.,  769692.,  770394.,  771096.,
      828969.,  829698.,  830427.,  831156.,  831885.,  832614.,  833343.,
      834072.,  1088106., 1089060., 1090014., 1090968., 1091922., 1092876.,
      1093830., 1094784., 802686.,  803388.,  804090.,  804792.,  805494.,
      806196.,  806898.,  807600.,  808302.,  809004.,  809706.,  810408.,
      993380.,  994280.,  995180.,  996080.,  996980.,  997880.,  998780.,
      999680.,  1243544., 1244720., 1245896., 1247072., 1248248., 1249424.,
      1250600., 1251776., 960352.,  961216.,  962080.,  962944.,  963808.,
      964672.,  965536.,  966400.,  881248.,  882112.,  882976.,  883840.,
      869700.,  870600.,  871500.,  872400.,  873300.,  874200.,  875100.,
      876000.,  1139416., 1140592., 1141768., 1142944., 1144120., 1145296.,
      1146472., 1147648., 838752.,  839616.,  840480.,  841344.,  842208.,
      843072.,  843936.,  844800.,  845664.,  846528.,  847392.,  848256.,
      689061.,  689682.,  690303.,  690924.,  691545.,  692166.,  692787.,
      693408.,  902570.,  903380.,  904190.,  905000.,  905810.,  906620.,
      907430.,  908240.,  664290.,  664884.,  665478.,  666072.,  666666.,
      667260.,  667854.,  668448.,  669042.,  669636.,  670230.,  670824.,
      723837.,  724458.,  725079.,  725700.,  726321.,  726942.,  727563.,
      728184.,  947930.,  948740.,  949550.,  950360.,  951170.,  951980.,
      952790.,  953600.,  697554.,  698148.,  698742.,  699336.,  699930.,
      700524.,  701118.,  701712.,  702306.,  702900.,  703494.,  704088.,
      676693.,  677314.,  677935.,  678556.,  679177.,  679798.,  680419.,
      681040.,  831498.,  832308.,  833118.,  833928.,  834738.,  835548.,
      836358.,  837168.,  650946.,  651540.,  652134.,  652728.,  653322.,
      653916.,  654510.,  655104.,  577874.,  578468.,  579062.,  579656.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x14x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      97070.,  97148.,  97226.,  97304.,  97382.,  97460.,  97538.,  97616.,
      97694.,  97772.,  97850.,  97928.,  98006.,  98084.,  98162.,  98240.,
      98318.,  98396.,  98474.,  98552.,  98630.,  98708.,  98786.,  98864.,
      98942.,  99020.,  99098.,  99176.,  101438., 101516., 101594., 101672.,
      101750., 101828., 101906., 101984., 102062., 102140., 102218., 102296.,
      102374., 102452., 102530., 102608., 102686., 102764., 102842., 102920.,
      102998., 103076., 103154., 103232., 103310., 103388., 103466., 103544.,
      105806., 105884., 105962., 106040., 106118., 106196., 106274., 106352.,
      106430., 106508., 106586., 106664., 106742., 106820., 106898., 106976.,
      107054., 107132., 107210., 107288., 107366., 107444., 107522., 107600.,
      107678., 107756., 107834., 107912., 110174., 110252., 110330., 110408.,
      110486., 110564., 110642., 110720., 110798., 110876., 110954., 111032.,
      111110., 111188., 111266., 111344., 111422., 111500., 111578., 111656.,
      111734., 111812., 111890., 111968., 112046., 112124., 112202., 112280.,
      114542., 114620., 114698., 114776., 114854., 114932., 115010., 115088.,
      115166., 115244., 115322., 115400., 115478., 115556., 115634., 115712.,
      91214.,  91292.,  91370.,  91448.,  91526.,  91604.,  91682.,  91760.,
      91838.,  91916.,  91994.,  92072.,  71806.,  71884.,  71962.,  72040.,
      72118.,  72196.,  72274.,  72352.,  72430.,  72508.,  72586.,  72664.,
      72742.,  72820.,  72898.,  72976.,  73054.,  73132.,  73210.,  73288.,
      73366.,  73444.,  73522.,  73600.,  73678.,  73756.,  73834.,  73912.,
      76174.,  76252.,  76330.,  76408.,  76486.,  76564.,  76642.,  76720.,
      76798.,  76876.,  76954.,  77032.,  77110.,  77188.,  77266.,  77344.,
      77422.,  77500.,  77578.,  77656.,  77734.,  77812.,  77890.,  77968.,
      78046.,  78124.,  78202.,  78280.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 4}};
  const int features = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1551519., 1576290., 1552950., 1577748., 1554381., 1579206., 1555812.,
      1580664., 1557243., 1582122., 1558674., 1583580., 1560105., 1585038.,
      1561536., 1586496., 2036336., 2069364., 2038208., 2071272., 2040080.,
      2073180., 2041952., 2075088., 2043824., 2076996., 2045696., 2078904.,
      2047568., 2080812., 2049440., 2082720., 1501977., 1526748., 1503354.,
      1528152., 1504731., 1529556., 1506108., 1530960., 1507485., 1532364.,
      1508862., 1533768., 1510239., 1535172., 1511616., 1536576., 1512993.,
      1537980., 1514370., 1539384., 1515747., 1540788., 1517124., 1542192.,
      1631655., 1657938., 1633086., 1659396., 1634517., 1660854., 1635948.,
      1662312., 1637379., 1663770., 1638810., 1665228., 1640241., 1666686.,
      1641672., 1668144., 2141168., 2176212., 2143040., 2178120., 2144912.,
      2180028., 2146784., 2181936., 2148656., 2183844., 2150528., 2185752.,
      2152400., 2187660., 2154272., 2189568., 1579089., 1605372., 1580466.,
      1606776., 1581843., 1608180., 1583220., 1609584., 1584597., 1610988.,
      1585974., 1612392., 1587351., 1613796., 1588728., 1615200., 1590105.,
      1616604., 1591482., 1618008., 1592859., 1619412., 1594236., 1620816.,
      1953732., 1986760., 1955496., 1988560., 1957260., 1990360., 1959024.,
      1992160., 1960788., 1993960., 1962552., 1995760., 1964316., 1997560.,
      1966080., 1999360., 2444416., 2487088., 2446720., 2489440., 2449024.,
      2491792., 2451328., 2494144., 2453632., 2496496., 2455936., 2498848.,
      2458240., 2501200., 2460544., 2503552., 1887676., 1920704., 1889368.,
      1922432., 1891060., 1924160., 1892752., 1925888., 1894444., 1927616.,
      1896136., 1929344., 1897828., 1931072., 1899520., 1932800., 1731228.,
      1762496., 1732920., 1764224., 1734612., 1765952., 1736304., 1767680.,
      1708452., 1739400., 1710216., 1741200., 1711980., 1743000., 1713744.,
      1744800., 1715508., 1746600., 1717272., 1748400., 1719036., 1750200.,
      1720800., 1752000., 2237568., 2278832., 2239872., 2281184., 2242176.,
      2283536., 2244480., 2285888., 2246784., 2288240., 2249088., 2290592.,
      2251392., 2292944., 2253696., 2295296., 1646556., 1677504., 1648248.,
      1679232., 1649940., 1680960., 1651632., 1682688., 1653324., 1684416.,
      1655016., 1686144., 1656708., 1687872., 1658400., 1689600., 1660092.,
      1691328., 1661784., 1693056., 1663476., 1694784., 1665168., 1696512.,
      1353351., 1378122., 1354566., 1379364., 1355781., 1380606., 1356996.,
      1381848., 1358211., 1383090., 1359426., 1384332., 1360641., 1385574.,
      1361856., 1386816., 1772112., 1805140., 1773696., 1806760., 1775280.,
      1808380., 1776864., 1810000., 1778448., 1811620., 1780032., 1813240.,
      1781616., 1814860., 1783200., 1816480., 1303809., 1328580., 1304970.,
      1329768., 1306131., 1330956., 1307292., 1332144., 1308453., 1333332.,
      1309614., 1334520., 1310775., 1335708., 1311936., 1336896., 1313097.,
      1338084., 1314258., 1339272., 1315419., 1340460., 1316580., 1341648.,
      1421391., 1447674., 1422606., 1448916., 1423821., 1450158., 1425036.,
      1451400., 1426251., 1452642., 1427466., 1453884., 1428681., 1455126.,
      1429896., 1456368., 1860816., 1895860., 1862400., 1897480., 1863984.,
      1899100., 1865568., 1900720., 1867152., 1902340., 1868736., 1903960.,
      1870320., 1905580., 1871904., 1907200., 1368825., 1395108., 1369986.,
      1396296., 1371147., 1397484., 1372308., 1398672., 1373469., 1399860.,
      1374630., 1401048., 1375791., 1402236., 1376952., 1403424., 1378113.,
      1404612., 1379274., 1405800., 1380435., 1406988., 1381596., 1408176.,
      1327639., 1353386., 1328854., 1354628., 1330069., 1355870., 1331284.,
      1357112., 1332499., 1358354., 1333714., 1359596., 1334929., 1360838.,
      1336144., 1362080., 1630032., 1662996., 1631616., 1664616., 1633200.,
      1666236., 1634784., 1667856., 1636368., 1669476., 1637952., 1671096.,
      1639536., 1672716., 1641120., 1674336., 1276145., 1301892., 1277306.,
      1303080., 1278467., 1304268., 1279628., 1305456., 1280789., 1306644.,
      1281950., 1307832., 1283111., 1309020., 1284272., 1310208., 1131833.,
      1155748., 1132994., 1156936., 1134155., 1158124., 1135316., 1159312.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x14x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      183280., 194140., 183424., 194296., 183568., 194452., 183712., 194608.,
      183856., 194764., 184000., 194920., 184144., 195076., 184288., 195232.,
      184432., 195388., 184576., 195544., 184720., 195700., 184864., 195856.,
      185008., 196012., 185152., 196168., 185296., 196324., 185440., 196480.,
      185584., 196636., 185728., 196792., 185872., 196948., 186016., 197104.,
      186160., 197260., 186304., 197416., 186448., 197572., 186592., 197728.,
      186736., 197884., 186880., 198040., 187024., 198196., 187168., 198352.,
      191344., 202876., 191488., 203032., 191632., 203188., 191776., 203344.,
      191920., 203500., 192064., 203656., 192208., 203812., 192352., 203968.,
      192496., 204124., 192640., 204280., 192784., 204436., 192928., 204592.,
      193072., 204748., 193216., 204904., 193360., 205060., 193504., 205216.,
      193648., 205372., 193792., 205528., 193936., 205684., 194080., 205840.,
      194224., 205996., 194368., 206152., 194512., 206308., 194656., 206464.,
      194800., 206620., 194944., 206776., 195088., 206932., 195232., 207088.,
      199408., 211612., 199552., 211768., 199696., 211924., 199840., 212080.,
      199984., 212236., 200128., 212392., 200272., 212548., 200416., 212704.,
      200560., 212860., 200704., 213016., 200848., 213172., 200992., 213328.,
      201136., 213484., 201280., 213640., 201424., 213796., 201568., 213952.,
      201712., 214108., 201856., 214264., 202000., 214420., 202144., 214576.,
      202288., 214732., 202432., 214888., 202576., 215044., 202720., 215200.,
      202864., 215356., 203008., 215512., 203152., 215668., 203296., 215824.,
      207472., 220348., 207616., 220504., 207760., 220660., 207904., 220816.,
      208048., 220972., 208192., 221128., 208336., 221284., 208480., 221440.,
      208624., 221596., 208768., 221752., 208912., 221908., 209056., 222064.,
      209200., 222220., 209344., 222376., 209488., 222532., 209632., 222688.,
      209776., 222844., 209920., 223000., 210064., 223156., 210208., 223312.,
      210352., 223468., 210496., 223624., 210640., 223780., 210784., 223936.,
      210928., 224092., 211072., 224248., 211216., 224404., 211360., 224560.,
      215536., 229084., 215680., 229240., 215824., 229396., 215968., 229552.,
      216112., 229708., 216256., 229864., 216400., 230020., 216544., 230176.,
      216688., 230332., 216832., 230488., 216976., 230644., 217120., 230800.,
      217264., 230956., 217408., 231112., 217552., 231268., 217696., 231424.,
      170736., 182428., 170880., 182584., 171024., 182740., 171168., 182896.,
      171312., 183052., 171456., 183208., 171600., 183364., 171744., 183520.,
      171888., 183676., 172032., 183832., 172176., 183988., 172320., 184144.,
      133488., 143612., 133632., 143768., 133776., 143924., 133920., 144080.,
      134064., 144236., 134208., 144392., 134352., 144548., 134496., 144704.,
      134640., 144860., 134784., 145016., 134928., 145172., 135072., 145328.,
      135216., 145484., 135360., 145640., 135504., 145796., 135648., 145952.,
      135792., 146108., 135936., 146264., 136080., 146420., 136224., 146576.,
      136368., 146732., 136512., 146888., 136656., 147044., 136800., 147200.,
      136944., 147356., 137088., 147512., 137232., 147668., 137376., 147824.,
      141552., 152348., 141696., 152504., 141840., 152660., 141984., 152816.,
      142128., 152972., 142272., 153128., 142416., 153284., 142560., 153440.,
      142704., 153596., 142848., 153752., 142992., 153908., 143136., 154064.,
      143280., 154220., 143424., 154376., 143568., 154532., 143712., 154688.,
      143856., 154844., 144000., 155000., 144144., 155156., 144288., 155312.,
      144432., 155468., 144576., 155624., 144720., 155780., 144864., 155936.,
      145008., 156092., 145152., 156248., 145296., 156404., 145440., 156560.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 4}};
  const int features = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, SAME3x14x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3078267., 3103038., 3127809., 3152580., 3081102., 3105900., 3130698.,
      3155496., 3083937., 3108762., 3133587., 3158412., 3086772., 3111624.,
      3136476., 3161328., 3089607., 3114486., 3139365., 3164244., 3092442.,
      3117348., 3142254., 3167160., 3095277., 3120210., 3145143., 3170076.,
      3098112., 3123072., 3148032., 3172992., 4039644., 4072672., 4105700.,
      4138728., 4043352., 4076416., 4109480., 4142544., 4047060., 4080160.,
      4113260., 4146360., 4050768., 4083904., 4117040., 4150176., 4054476.,
      4087648., 4120820., 4153992., 4058184., 4091392., 4124600., 4157808.,
      4061892., 4095136., 4128380., 4161624., 4065600., 4098880., 4132160.,
      4165440., 2979183., 3003954., 3028725., 3053496., 2981910., 3006708.,
      3031506., 3056304., 2984637., 3009462., 3034287., 3059112., 2987364.,
      3012216., 3037068., 3061920., 2990091., 3014970., 3039849., 3064728.,
      2992818., 3017724., 3042630., 3067536., 2995545., 3020478., 3045411.,
      3070344., 2998272., 3023232., 3048192., 3073152., 3000999., 3025986.,
      3050973., 3075960., 3003726., 3028740., 3053754., 3078768., 3006453.,
      3031494., 3056535., 3081576., 3009180., 3034248., 3059316., 3084384.,
      3237027., 3263310., 3289593., 3315876., 3239862., 3266172., 3292482.,
      3318792., 3242697., 3269034., 3295371., 3321708., 3245532., 3271896.,
      3298260., 3324624., 3248367., 3274758., 3301149., 3327540., 3251202.,
      3277620., 3304038., 3330456., 3254037., 3280482., 3306927., 3333372.,
      3256872., 3283344., 3309816., 3336288., 4247292., 4282336., 4317380.,
      4352424., 4251000., 4286080., 4321160., 4356240., 4254708., 4289824.,
      4324940., 4360056., 4258416., 4293568., 4328720., 4363872., 4262124.,
      4297312., 4332500., 4367688., 4265832., 4301056., 4336280., 4371504.,
      4269540., 4304800., 4340060., 4375320., 4273248., 4308544., 4343840.,
      4379136., 3131895., 3158178., 3184461., 3210744., 3134622., 3160932.,
      3187242., 3213552., 3137349., 3163686., 3190023., 3216360., 3140076.,
      3166440., 3192804., 3219168., 3142803., 3169194., 3195585., 3221976.,
      3145530., 3171948., 3198366., 3224784., 3148257., 3174702., 3201147.,
      3227592., 3150984., 3177456., 3203928., 3230400., 3153711., 3180210.,
      3206709., 3233208., 3156438., 3182964., 3209490., 3236016., 3159165.,
      3185718., 3212271., 3238824., 3161892., 3188472., 3215052., 3241632.,
      3874436., 3907464., 3940492., 3973520., 3877928., 3910992., 3944056.,
      3977120., 3881420., 3914520., 3947620., 3980720., 3884912., 3918048.,
      3951184., 3984320., 3888404., 3921576., 3954748., 3987920., 3891896.,
      3925104., 3958312., 3991520., 3895388., 3928632., 3961876., 3995120.,
      3898880., 3932160., 3965440., 3998720., 4846160., 4888832., 4931504.,
      4974176., 4850720., 4893440., 4936160., 4978880., 4855280., 4898048.,
      4940816., 4983584., 4859840., 4902656., 4945472., 4988288., 4864400.,
      4907264., 4950128., 4992992., 4868960., 4911872., 4954784., 4997696.,
      4873520., 4916480., 4959440., 5002400., 4878080., 4921088., 4964096.,
      5007104., 3742324., 3775352., 3808380., 3841408., 3745672., 3778736.,
      3811800., 3844864., 3749020., 3782120., 3815220., 3848320., 3752368.,
      3785504., 3818640., 3851776., 3755716., 3788888., 3822060., 3855232.,
      3759064., 3792272., 3825480., 3858688., 3762412., 3795656., 3828900.,
      3862144., 3765760., 3799040., 3832320., 3865600., 3431188., 3462456.,
      3493724., 3524992., 3434536., 3465840., 3497144., 3528448., 3437884.,
      3469224., 3500564., 3531904., 3441232., 3472608., 3503984., 3535360.,
      3385956., 3416904., 3447852., 3478800., 3389448., 3420432., 3451416.,
      3482400., 3392940., 3423960., 3454980., 3486000., 3396432., 3427488.,
      3458544., 3489600., 3399924., 3431016., 3462108., 3493200., 3403416.,
      3434544., 3465672., 3496800., 3406908., 3438072., 3469236., 3500400.,
      3410400., 3441600., 3472800., 3504000., 4433872., 4475136., 4516400.,
      4557664., 4438432., 4479744., 4521056., 4562368., 4442992., 4484352.,
      4525712., 4567072., 4447552., 4488960., 4530368., 4571776., 4452112.,
      4493568., 4535024., 4576480., 4456672., 4498176., 4539680., 4581184.,
      4461232., 4502784., 4544336., 4585888., 4465792., 4507392., 4548992.,
      4590592., 3262164., 3293112., 3324060., 3355008., 3265512., 3296496.,
      3327480., 3358464., 3268860., 3299880., 3330900., 3361920., 3272208.,
      3303264., 3334320., 3365376., 3275556., 3306648., 3337740., 3368832.,
      3278904., 3310032., 3341160., 3372288., 3282252., 3313416., 3344580.,
      3375744., 3285600., 3316800., 3348000., 3379200., 3288948., 3320184.,
      3351420., 3382656., 3292296., 3323568., 3354840., 3386112., 3295644.,
      3326952., 3358260., 3389568., 3298992., 3330336., 3361680., 3393024.,
      2681931., 2706702., 2731473., 2756244., 2684334., 2709132., 2733930.,
      2758728., 2686737., 2711562., 2736387., 2761212., 2689140., 2713992.,
      2738844., 2763696., 2691543., 2716422., 2741301., 2766180., 2693946.,
      2718852., 2743758., 2768664., 2696349., 2721282., 2746215., 2771148.,
      2698752., 2723712., 2748672., 2773632., 3511196., 3544224., 3577252.,
      3610280., 3514328., 3547392., 3580456., 3613520., 3517460., 3550560.,
      3583660., 3616760., 3520592., 3553728., 3586864., 3620000., 3523724.,
      3556896., 3590068., 3623240., 3526856., 3560064., 3593272., 3626480.,
      3529988., 3563232., 3596476., 3629720., 3533120., 3566400., 3599680.,
      3632960., 2582847., 2607618., 2632389., 2657160., 2585142., 2609940.,
      2634738., 2659536., 2587437., 2612262., 2637087., 2661912., 2589732.,
      2614584., 2639436., 2664288., 2592027., 2616906., 2641785., 2666664.,
      2594322., 2619228., 2644134., 2669040., 2596617., 2621550., 2646483.,
      2671416., 2598912., 2623872., 2648832., 2673792., 2601207., 2626194.,
      2651181., 2676168., 2603502., 2628516., 2653530., 2678544., 2605797.,
      2630838., 2655879., 2680920., 2608092., 2633160., 2658228., 2683296.,
      2816499., 2842782., 2869065., 2895348., 2818902., 2845212., 2871522.,
      2897832., 2821305., 2847642., 2873979., 2900316., 2823708., 2850072.,
      2876436., 2902800., 2826111., 2852502., 2878893., 2905284., 2828514.,
      2854932., 2881350., 2907768., 2830917., 2857362., 2883807., 2910252.,
      2833320., 2859792., 2886264., 2912736., 3686588., 3721632., 3756676.,
      3791720., 3689720., 3724800., 3759880., 3794960., 3692852., 3727968.,
      3763084., 3798200., 3695984., 3731136., 3766288., 3801440., 3699116.,
      3734304., 3769492., 3804680., 3702248., 3737472., 3772696., 3807920.,
      3705380., 3740640., 3775900., 3811160., 3708512., 3743808., 3779104.,
      3814400., 2711367., 2737650., 2763933., 2790216., 2713662., 2739972.,
      2766282., 2792592., 2715957., 2742294., 2768631., 2794968., 2718252.,
      2744616., 2770980., 2797344., 2720547., 2746938., 2773329., 2799720.,
      2722842., 2749260., 2775678., 2802096., 2725137., 2751582., 2778027.,
      2804472., 2727432., 2753904., 2780376., 2806848., 2729727., 2756226.,
      2782725., 2809224., 2732022., 2758548., 2785074., 2811600., 2734317.,
      2760870., 2787423., 2813976., 2736612., 2763192., 2789772., 2816352.,
      2629531., 2655278., 2681025., 2706772., 2631934., 2657708., 2683482.,
      2709256., 2634337., 2660138., 2685939., 2711740., 2636740., 2662568.,
      2688396., 2714224., 2639143., 2664998., 2690853., 2716708., 2641546.,
      2667428., 2693310., 2719192., 2643949., 2669858., 2695767., 2721676.,
      2646352., 2672288., 2698224., 2724160., 3227100., 3260064., 3293028.,
      3325992., 3230232., 3263232., 3296232., 3329232., 3233364., 3266400.,
      3299436., 3332472., 3236496., 3269568., 3302640., 3335712., 3239628.,
      3272736., 3305844., 3338952., 3242760., 3275904., 3309048., 3342192.,
      3245892., 3279072., 3312252., 3345432., 3249024., 3282240., 3315456.,
      3348672., 2526543., 2552290., 2578037., 2603784., 2528838., 2554612.,
      2580386., 2606160., 2531133., 2556934., 2582735., 2608536., 2533428.,
      2559256., 2585084., 2610912., 2535723., 2561578., 2587433., 2613288.,
      2538018., 2563900., 2589782., 2615664., 2540313., 2566222., 2592131.,
      2618040., 2542608., 2568544., 2594480., 2620416., 2239751., 2263666.,
      2287581., 2311496., 2242046., 2265988., 2289930., 2313872., 2244341.,
      2268310., 2292279., 2316248., 2246636., 2270632., 2294628., 2318624.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}
TYPED_TEST(FilterBackpropWindow7Stride4, VALID3x14x14x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      355700., 366560., 377420., 388280., 355976., 366848., 377720., 388592.,
      356252., 367136., 378020., 388904., 356528., 367424., 378320., 389216.,
      356804., 367712., 378620., 389528., 357080., 368000., 378920., 389840.,
      357356., 368288., 379220., 390152., 357632., 368576., 379520., 390464.,
      357908., 368864., 379820., 390776., 358184., 369152., 380120., 391088.,
      358460., 369440., 380420., 391400., 358736., 369728., 380720., 391712.,
      359012., 370016., 381020., 392024., 359288., 370304., 381320., 392336.,
      359564., 370592., 381620., 392648., 359840., 370880., 381920., 392960.,
      360116., 371168., 382220., 393272., 360392., 371456., 382520., 393584.,
      360668., 371744., 382820., 393896., 360944., 372032., 383120., 394208.,
      361220., 372320., 383420., 394520., 361496., 372608., 383720., 394832.,
      361772., 372896., 384020., 395144., 362048., 373184., 384320., 395456.,
      362324., 373472., 384620., 395768., 362600., 373760., 384920., 396080.,
      362876., 374048., 385220., 396392., 363152., 374336., 385520., 396704.,
      371156., 382688., 394220., 405752., 371432., 382976., 394520., 406064.,
      371708., 383264., 394820., 406376., 371984., 383552., 395120., 406688.,
      372260., 383840., 395420., 407000., 372536., 384128., 395720., 407312.,
      372812., 384416., 396020., 407624., 373088., 384704., 396320., 407936.,
      373364., 384992., 396620., 408248., 373640., 385280., 396920., 408560.,
      373916., 385568., 397220., 408872., 374192., 385856., 397520., 409184.,
      374468., 386144., 397820., 409496., 374744., 386432., 398120., 409808.,
      375020., 386720., 398420., 410120., 375296., 387008., 398720., 410432.,
      375572., 387296., 399020., 410744., 375848., 387584., 399320., 411056.,
      376124., 387872., 399620., 411368., 376400., 388160., 399920., 411680.,
      376676., 388448., 400220., 411992., 376952., 388736., 400520., 412304.,
      377228., 389024., 400820., 412616., 377504., 389312., 401120., 412928.,
      377780., 389600., 401420., 413240., 378056., 389888., 401720., 413552.,
      378332., 390176., 402020., 413864., 378608., 390464., 402320., 414176.,
      386612., 398816., 411020., 423224., 386888., 399104., 411320., 423536.,
      387164., 399392., 411620., 423848., 387440., 399680., 411920., 424160.,
      387716., 399968., 412220., 424472., 387992., 400256., 412520., 424784.,
      388268., 400544., 412820., 425096., 388544., 400832., 413120., 425408.,
      388820., 401120., 413420., 425720., 389096., 401408., 413720., 426032.,
      389372., 401696., 414020., 426344., 389648., 401984., 414320., 426656.,
      389924., 402272., 414620., 426968., 390200., 402560., 414920., 427280.,
      390476., 402848., 415220., 427592., 390752., 403136., 415520., 427904.,
      391028., 403424., 415820., 428216., 391304., 403712., 416120., 428528.,
      391580., 404000., 416420., 428840., 391856., 404288., 416720., 429152.,
      392132., 404576., 417020., 429464., 392408., 404864., 417320., 429776.,
      392684., 405152., 417620., 430088., 392960., 405440., 417920., 430400.,
      393236., 405728., 418220., 430712., 393512., 406016., 418520., 431024.,
      393788., 406304., 418820., 431336., 394064., 406592., 419120., 431648.,
      402068., 414944., 427820., 440696., 402344., 415232., 428120., 441008.,
      402620., 415520., 428420., 441320., 402896., 415808., 428720., 441632.,
      403172., 416096., 429020., 441944., 403448., 416384., 429320., 442256.,
      403724., 416672., 429620., 442568., 404000., 416960., 429920., 442880.,
      404276., 417248., 430220., 443192., 404552., 417536., 430520., 443504.,
      404828., 417824., 430820., 443816., 405104., 418112., 431120., 444128.,
      405380., 418400., 431420., 444440., 405656., 418688., 431720., 444752.,
      405932., 418976., 432020., 445064., 406208., 419264., 432320., 445376.,
      406484., 419552., 432620., 445688., 406760., 419840., 432920., 446000.,
      407036., 420128., 433220., 446312., 407312., 420416., 433520., 446624.,
      407588., 420704., 433820., 446936., 407864., 420992., 434120., 447248.,
      408140., 421280., 434420., 447560., 408416., 421568., 434720., 447872.,
      408692., 421856., 435020., 448184., 408968., 422144., 435320., 448496.,
      409244., 422432., 435620., 448808., 409520., 422720., 435920., 449120.,
      417524., 431072., 444620., 458168., 417800., 431360., 444920., 458480.,
      418076., 431648., 445220., 458792., 418352., 431936., 445520., 459104.,
      418628., 432224., 445820., 459416., 418904., 432512., 446120., 459728.,
      419180., 432800., 446420., 460040., 419456., 433088., 446720., 460352.,
      419732., 433376., 447020., 460664., 420008., 433664., 447320., 460976.,
      420284., 433952., 447620., 461288., 420560., 434240., 447920., 461600.,
      420836., 434528., 448220., 461912., 421112., 434816., 448520., 462224.,
      421388., 435104., 448820., 462536., 421664., 435392., 449120., 462848.,
      329780., 341472., 353164., 364856., 330056., 341760., 353464., 365168.,
      330332., 342048., 353764., 365480., 330608., 342336., 354064., 365792.,
      330884., 342624., 354364., 366104., 331160., 342912., 354664., 366416.,
      331436., 343200., 354964., 366728., 331712., 343488., 355264., 367040.,
      331988., 343776., 355564., 367352., 332264., 344064., 355864., 367664.,
      332540., 344352., 356164., 367976., 332816., 344640., 356464., 368288.,
      256852., 266976., 277100., 287224., 257128., 267264., 277400., 287536.,
      257404., 267552., 277700., 287848., 257680., 267840., 278000., 288160.,
      257956., 268128., 278300., 288472., 258232., 268416., 278600., 288784.,
      258508., 268704., 278900., 289096., 258784., 268992., 279200., 289408.,
      259060., 269280., 279500., 289720., 259336., 269568., 279800., 290032.,
      259612., 269856., 280100., 290344., 259888., 270144., 280400., 290656.,
      260164., 270432., 280700., 290968., 260440., 270720., 281000., 291280.,
      260716., 271008., 281300., 291592., 260992., 271296., 281600., 291904.,
      261268., 271584., 281900., 292216., 261544., 271872., 282200., 292528.,
      261820., 272160., 282500., 292840., 262096., 272448., 282800., 293152.,
      262372., 272736., 283100., 293464., 262648., 273024., 283400., 293776.,
      262924., 273312., 283700., 294088., 263200., 273600., 284000., 294400.,
      263476., 273888., 284300., 294712., 263752., 274176., 284600., 295024.,
      264028., 274464., 284900., 295336., 264304., 274752., 285200., 295648.,
      272308., 283104., 293900., 304696., 272584., 283392., 294200., 305008.,
      272860., 283680., 294500., 305320., 273136., 283968., 294800., 305632.,
      273412., 284256., 295100., 305944., 273688., 284544., 295400., 306256.,
      273964., 284832., 295700., 306568., 274240., 285120., 296000., 306880.,
      274516., 285408., 296300., 307192., 274792., 285696., 296600., 307504.,
      275068., 285984., 296900., 307816., 275344., 286272., 297200., 308128.,
      275620., 286560., 297500., 308440., 275896., 286848., 297800., 308752.,
      276172., 287136., 298100., 309064., 276448., 287424., 298400., 309376.,
      276724., 287712., 298700., 309688., 277000., 288000., 299000., 310000.,
      277276., 288288., 299300., 310312., 277552., 288576., 299600., 310624.,
      277828., 288864., 299900., 310936., 278104., 289152., 300200., 311248.,
      278380., 289440., 300500., 311560., 278656., 289728., 300800., 311872.,
      278932., 290016., 301100., 312184., 279208., 290304., 301400., 312496.,
      279484., 290592., 301700., 312808., 279760., 290880., 302000., 313120.};
  const std::array<int, 4> in_shape = {{3, 14, 14, 4}};
  const int features = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_filter_backprop_test(exp_out, in_shape, features, padding,
                                 max_input_val);
}